一 栈
栈是一种只能在一端进行插入和删除操作的线性表,其中这一端叫做栈顶,并且栈具有的最大特点就是先进后出,就好比一列人进入了一个前面是死胡同的通道,那么最先进去的人就被堵在里面了,只能等到前面的人走完才能出来,这就是栈的特点。
我们指导List接口下有一个Vector,Vector下有一个stack,但是一般可以不用这个,这个是遗留下来的类,一般建议可以用Queue接口下的Deque,关于这个可以用作栈来使用。下面有参考文章链接。
二 自己实现栈
package stack;
public class ArrayStack{
private final int maxsize; //栈的大小
private final int[] stack; //数组模拟栈
private int top = -1; //表示栈顶,初始化为-1
//构造器
public ArrayStack(int maxsize){
this.maxsize = maxsize;
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()){
System.out.println("栈空");
return -1;
}
int value = stack[top];
top--;
return value;
}
//遍历栈
public void show(){
if (isEmpty()){
System.out.println("没有数据");
return;
}
for (int i = top;i>=0;i--){
System.out.println(stack[i]);
}
}
//返回栈顶
public int getTop(){
return stack[top];
}
}
三 Deque的使用
可以参考这篇文章,作者讲的很好Deque的详解。
这里记录一下new一个linkedlist对象:
Deque<E> deque = new LinkedList<E>()