-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathStackTest.java
More file actions
135 lines (93 loc) · 2.6 KB
/
StackTest.java
File metadata and controls
135 lines (93 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package stack;
/**
* Created by ozc on 2018/3/28.
*
* @author ozc
* @version 1.0
*/
public class StackTest {
public static void main(String[] args) {
//初始化栈(无元素)
Stack stack = new Stack(new Node(), new Node());
//栈顶和栈尾是同一指向
stack.stackBottom = stack.stackTop;
//指向null
stack.stackTop.next = null;
//进栈
pushStack(stack, 3);
pushStack(stack, 4);
pushStack(stack, 5);
traverse(stack);
isEmpty(stack);
// 出栈
/* popStack(stack);
popStack(stack);
popStack(stack);
popStack(stack);
popStack(stack);*/
clearStack(stack);
isEmpty(stack);
}
/**
* 进栈
*
* @param stack 栈
* @param value 要进栈的元素
*/
public static void pushStack(Stack stack, int value) {
// 封装数据成节点
Node newNode = new Node(value);
// 栈顶本来指向的节点交由新节点来指向
newNode.next = stack.stackTop;
// 栈顶指针指向新节点
stack.stackTop = newNode;
}
/**
* 遍历栈(只要栈顶指针不指向栈底指针,就一直输出)
*
* @param stack
*/
public static void traverse(Stack stack) {
Node stackTop = stack.stackTop;
while (stackTop != stack.stackBottom) {
System.out.println("关注公众号:Java3y:" + stackTop.data);
stackTop = stackTop.next;
}
}
/**
* 判断该栈是否为空
*
* @param stack
*/
public static boolean isEmpty(Stack stack) {
if (stack.stackTop == stack.stackBottom) {
System.out.println("关注公众号:Java3y---->该栈为空");
return true;
} else {
System.out.println("关注公众号:Java3y---->该栈不为空");
return false;
}
}
/**
* 出栈(将栈顶的指针指向下一个节点)
* @param stack
*/
public static void popStack(Stack stack) {
// 栈不为空才能出栈
if (!isEmpty(stack)) {
//栈顶元素
Node top = stack.stackTop;
// 栈顶指针指向下一个节点
stack.stackTop = top.next;
System.out.println("关注公众号:Java3y---->出栈的元素是:" + top.data);
}
}
/**
* 清空栈
* @param stack
*/
public static void clearStack(Stack stack) {
stack.stackTop = null;
stack.stackBottom = stack.stackTop;
}
}