队列是一个先入先出的有序列表,而栈和队列相反,是个先入后出的有序列表。
栈的特点就是先进后出。
栈的最底端我们称为栈底,这一端是不会变化的。而另一个变化随着放入元素而变化的一端我们称为栈顶。
- 首先我们创建一个栈类,用来实现对栈的各种操作
class Stack {
private int maxSize; // 栈的最大长度
private int[] stack; // 用数组来模拟栈
private int top = -1; // 这个表示栈顶
public Stack(int maxSize) {
this.maxSize = maxSize;
this.stack = new int[maxSize];
}
}
- 接着来分别写两个方法,分别来判断栈是满是空
// 判断栈满
public boolean isFull() {
return top == maxSize - 1;
}
// 判断栈是否为空
public boolean isEmpty() {
return top == -1;
}
- 然后便是入栈和出栈
// 入栈
public void push(int value) {
if(isFull()) {
System.out.println("栈已经满了!");
return;
}
top ++;
stack[top] = value;
}
// 出栈
public int pop() {
if (isEmpty()) {
throw new RuntimeException("栈已经为空了!");
}
int temp = top;
top --;
return stack[temp];
}
- 再然后来写一个遍历栈的方法
// 遍历栈
public void show() {
if(isEmpty()) {
System.out.println("栈已经为空了!");
return;
}
for(int i = top; i >= 0; i --)
System.out.println(stack[i]);
}
- 最后来写一个main()方法来测试一下这个栈
public class StackTest {
public static void main(String[] args) {
Stack stack = new Stack(3);
stack.push(1);
stack.push(2);
stack.push(3);
stack.show();
System.out.println("-----------------------");
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}