Stack 是线性表的一种特例。它对某些特别的问题处理起来非常的方便,如数制的转换,括号匹配的检查等。这些问题都有一个共同的特性:数据是后进先出的(例子我会在今后的博客中写出例子的具体实现),这也正式Stack 的特性。Stack 存储数据有其专有术语,称为“入栈”,它将数据存放在栈的顶部。Stack 移除数据时也有其专有术语“出栈”,“出栈”是将Stack 顶部的数据移除。 这里还有两点是我们需要了解的,首先是“栈顶”,“栈顶”是线性表的结尾,而“栈底”是线性表的表端。由于Java 对Stack 设计有误,由于是对Vector类 的继承,添加了很多Stack 不应该拥有的方法。因此我对其重新的设计。代码如下:
public class Stack<E> {
private LinkedList<E> stack = new LinkedList<E>();
public void clear() {
stack.clear();
}
public boolean isEmpty() {
return stack.isEmpty();
}
public int size() {
return stack.size();
}
public E peek() {
return stack.getLast();
}
public E push(E elem) {
stack.addLast( elem);
return elem;
}
public E pop() {
return stack.removeLast();
}
public String toString() {
return stack.toString();
}
public Iterator iterator() {
return stack.iterator();
}
public E[] toArray(E[] array) {
return (E[])stack.toArray( array);
}
}