什么是栈(stack)?
栈其实就是一种数据结构。它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素
栈的特点
先进后出
栈的图片
栈到底怎么用?用在哪里?
接下来就用一个小题来理解
一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( )
a) edcba
b) decba
c) dceab
d) abcde
根据栈的特点先进后出可知,a选项,符合栈的特点先进后出,a到e依次入栈在出栈正好符合选项,对于b和d选项,有些人可能会认为必须全部入栈后才能出栈,其实不然,可以入栈在直接出栈,这样b d选项就显然易见是对的,而对于c选项,a不可能在b的前面拿出来,故选c选项。
接下来向大家演示Stack的源码
class Stack<E> extends Vector<E> {
/**
* Creates an empty Stack.
*/
public Stack() {
}
通过idea查看stack的源码可以得知Stack的方法并不多,并且Stack也继承了一个类
public class Test222 {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(12);
stack.push(23);
stack.push(32);
//将三个数字入栈
System.out.println(stack.pop());//查看栈顶元素并删除
System.out.println(stack.peek());//查看栈顶元素
System.out.println(stack.isEmpty());//栈中是否还有元素
}
}
上面代码段介绍了Stack方法的使用
未完待续..