栈是限制插入和删除操作只能在一个位置上进行的表,该操作的位置是在表的末端的叫做栈。对栈常用的操作有压栈,出栈。栈有时候也叫做后进先出的表。
栈的实现方式有两种:
第一种方式是使用单链表。通过在表的顶端插入来实现push(入栈),通过删除表顶端元素实现pop(出栈)。
第二种方式是数组方式:模仿ArrayList的add方法操作,因此相应的实现方法很简单。
java在集合框架中提供了LinkedList类对象,该类提供了一栈的操作 。不过此处还是自己简单的封装了一个类用于实现栈功能(如果想了解栈的实现结构可以参看后面的C语言实现的栈)
类Stack.java实现的是一个栈的基本功能,在内部调用了LinkedList类中提供的一系列方法。
import java.util.LinkedList;
public class Stack<T> {
private LinkedList<T> stack = new LinkedList<T>();
//入栈
public T push(T value){
stack.addFirst(value);
return value ;
}
//出栈
public T pop(){
return stack.pop();
}
//取栈顶元素
public T top(){
if(stack.isEmpty())
return null ;
return stack.getFirst();
}
//是否栈空
public boolean isEmpty(){
return stack.isEmpty();
}
}
实现栈很简单,那么栈到底在什么时候用得到