栈是一种基于后进先出的数据结构。实现的栈的方式有数组和链表两种数据结构。下面我们来看看java中的Stack源码解析。
//Stack栈继承了 Vector方法,Vector方法是内部是数组实现的,即java中Stack 也是通过数组实现的。下面我们看看Stack如何通过Vector中的方法实现先进后出,实现压栈和出站的
public class Stack<E> extends Vector<E> {
public Stack() { } //对外的构造器实现
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
public boolean empty() {
return size() == 0;
}
public synchronized int search(Object o) {
int i = lastIndexOf(o);//从数组末尾开始遍历,取距离栈顶最近的元素
if (i >= 0) {
return size() - i;
}
return -1;
}
java中Stack栈的实现,是通过Vector集合中的方法来实现相应的压栈(push)和出栈(pop),即通过将数组元素的末尾作为栈顶,压栈和出栈从数组尾部进行,从而实现栈的新进后出的功能。栈中的元素放在
Object[]数组中,感兴趣的同学可以自己通过数组来白板编程实现栈。这里重点是介绍java中栈的实现,估不在做解释。
转载于:https://www.cnblogs.com/caibixiang123/p/9257441.html