顺序存储结构
Stack Vector 入栈 出栈 查询 用的也是数组 继承的是Vector,而Vector继承的是abstractList.同时ArrayList和LinkedList都继承自abstractList
Stack的方法 都是使用了顺序存储结构
push
在数组中添加新数据
pop 实质调用peek()方法,获取最新的元素
应该不能执行System.arraycopy()方法。 而是直接赋值为null
peek
empty 这是判空语句,而不是置空语句
search
很遗憾,系统中没有提供栈的链式存储结构。
手写栈的链式存储结构
public class StackNode {
public Object data;
public StackNode prv;
public StackNode next;
public StackNode(StackNode prv, Object data, StackNode next) {
this.data = data;
this.prv = prv;
this.next = next;
}
}
public class LinkedStack {
private StackNode firstNode;
private int size = 0;
public void push(Object e) {
StackNode newStackNode = new StackNode(firstNode, e, null);
if (firstNode == null) {
firstNode = newStackNode;
} else {
firstNode.next = newStackNode;
newStackNode.prv = firstNode;
firstNode = newStackNode;
}
size++;
}
public Object pop() {
Object data = null;
if (firstNode != null) {
if (firstNode.prv != null) {
StackNode temp = firstNode.prv;
data = firstNode.data;
firstNode.prv = null;
firstNode = null;
temp.next = null;
firstNode = temp;
} else {
firstNode.data = null;
firstNode = null;
}
size--;
}
return data;
}
public boolean clear() {
if (firstNode != null) {
while (firstNode.prv != null) {
StackNode temp = firstNode.prv;
firstNode.data = null;
firstNode.prv = null;
firstNode = null;
temp.next = null;
firstNode = temp;
size--;
}
firstNode.data = null;
firstNode = null;
size--;
}
return true;
}
public int getSize(){
return size;
}
}