(堆)栈(二)

2014-11-24 11:17:26 · 作者: · 浏览: 5
栈, 无头结点
* @author Administrator
*
*/
public class LinkStack implements Stack {
private Node top; //栈顶指针
private int size; //栈的大小
public LinkStack() {
top = null;
size = 0;
}
@Override
public void clear() {
top = null;
size = 0;
}
@Override
public void push(Object obj) {
Node p = new Node(obj);
if(top == null) {
top = p;
} else {
p.next = top;
top = p;
}
size ++;
}
@Override
public Object pop() {
Node p = top;
top = top.next;
size --;
return p.data;
}
@Override
public boolean isEmpty() {
if(size == 0)
return true;
else
return false;
}
@Override
public int size() {
return size;
}
@Override
public Object peek() {
return top.data;
}
public String toString() {
StringBuilder sb = new StringBuilder("[");
Node p = top;
if(p == null) {
sb.append("");
} else {
do{
sb.append(p.data + ", ");
}while((p = p.next) != null);
}
sb.append("]");
return sb.toString();
}
}
测试(堆)栈
[java]
package stack;
public class Test {
/**
* 测试堆栈
* @param args
*/
public static void main(String[] args) {
//Stack stack = new ArrayStack();
Stack stack = new LinkStack();
for(int i=0; i<10; i++) {
stack.push(i);
}
System.out.println(stack.toString());
Object a = stack.pop();
System.out.println(a + stack.toString());
stack.push(20);
Object b = stack.peek();
System.out.println( b + stack.toString());
stack.clear();
System.out.println( "数据数量:" + stack.size()
+ " isEmpty " + stack.isEmpty() + " 数据为:" + stack.toString());
}
}
结果
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0, ]
9[8, 7, 6, 5, 4, 3, 2, 1, 0, ]
20[20, 8, 7, 6, 5, 4, 3, 2, 1, 0, ]
数据数量:0 isEmpty true 数据为:[]