栈是在数据结构中比较常见的一种形式,栈是采用典型的先进后出的操作方式完成的。
栈是采用先进后出的数据存储方式,每一个栈都包含一个栈顶,每次出栈是将栈顶的数据取出
![](http://hiphotos.baidu.com/%C1%E1%E7%E7%C6%EB/pic/item/afe64e1d49540923a97fd1d99258d109b2de49ec.jpg)
在java中使用Stack类进行栈的操作,Stack类是Vector的子类,Stack的定义如下
public class Stack<E>extends Vector<E>
![](http://hiphotos.baidu.com/%C1%E1%E7%E7%C6%EB/pic/item/0c8a26c27cd98d104ca7be96213fb80e7aec908f.jpg)
事例
package com.qn.test;
import java.util.Stack;
public class StackTest {
public static void main(String[] args) {
Stack<String> s=new Stack<String>();
s.push("A");//入栈
s.push("B");//入栈
s.push("C");//入栈
s.push("D");//入栈
System.out.println(s.pop());//先进后出
System.out.println(s.pop());//先进后出
System.out.println(s.pop());//先进后出
System.out.println(s.pop());//先进后出
}
}
结果
![](http://hiphotos.baidu.com/%C1%E1%E7%E7%C6%EB/pic/item/2ba0155c9822720e1e74505d7bcb0a46f31fab40.jpg)
如果栈中没有内容了,则无法继续出栈
如下
package com.qn.test;
import java.util.Stack;
public class StackTest {
public static void main(String[] args) {
Stack<String> s=new Stack<String>();
s.push("A");//入栈
s.push("B");//入栈
s.push("C");//入栈
s.push("D");//入栈
System.out.println(s.pop());//先进后出
System.out.println(s.pop());//先进后出
System.out.println(s.pop());//先进后出
System.out.println(s.pop());//先进后出
System.out.println(s.pop());//先进后出
}
}
会出下面的空栈异常
![](http://hiphotos.baidu.com/%C1%E1%E7%E7%C6%EB/pic/item/736aa39959ee3d6d525b356c43166d224e4ade59.jpg)