import java.util.EmptyStackException;
/**
* @Classname Stack:栈是一种线性数据结构,遵从LIFO(后进先出)的操作顺序,所有操作都是在顶部进行
*/
public class Stack<E> extends Vector<E> {
/**
* Stack的构造函数:跟Vector 一样,它是数组实现的栈
*/
public Stack() {};// 构造函数
/**
* Stack的入栈:Vector的addElement()方法,就是在数组尾部添加元素
*/
public E push(E item) {// push入栈
addElement(item);
return item;
}
public synchronized E pop() {// pop栈顶元素出栈,并返回
E obj;
int len = size();
obj = peek();// 调用peek()获取顶端元素后返回
removeElementAt(len - 1);// 调用Vector.removeElementAt删除顶端元素
return obj;
}
/**
* Stack的查询:获取顶端元素,但不删除
*/
public synchronized E peek() {// peek获取栈顶元素,并不删除
int len = size();// 调用Vector.size()返回元素个数
if (len == 0) {
throw new EmptyStackException()
}
return elementAt(len - 1);// 调用Vector.elementAt得到栈顶元素
}
/**
* 判断是否为空
*/
public boolean empty() {
return size() == 0;
}
/**
* Stack的查找:查找元素是否在栈中
*/
public synchronized int search(Object object) {
int i = lastIndexOf(object);
if(i>=0) {
return size() - i;
return -1;
}
}
}
数据结构之栈的实现
最新推荐文章于 2022-05-15 17:20:11 发布