//使用链表实现栈
package 栈;
interface StackADT {
public void push(Object element);//压栈
public Object pop();//出栈
public boolean isEmpty();//判断是否为空栈
public int size();
public Object peek();
public String toString();
}
class Node {//节点类
Node perNode;
Object Data;
public Node() {
}
public Node(Object element) {
this.Data = element;
}
public Object printNode() {
return Data;
}
}
public class Stack implements StackADT {
private Node top;
private int count;
Stack() {
this.count = 0;
this.top = null;
}
@Override
public void push(Object element) { //入栈
Node node = new Node(element);
node.Data = element;
node.perNode = top;
//改变指针
top = node;
count++;
}
@Override
public Object pop() { //查看栈顶元素并删除栈顶元素
/* if (isEmpty()) {
System.out.println("Stack is Empty!");
}
Object result = top.printNode();
count--;
return result;*/
if (top != null) {
Node node = top;
// 改变栈顶指针
top = top.perNode;
count--;
return node.Data;
}
return null;
}
@Override
public boolean isEmpty() {
return size() == 0;
}
@Override
public int size() {
return count;
}
@Override
public Object peek() {
Object result = top.printNode();
return result;
}
public static void main(String[] args) {
Stack s = new Stack();
s.push(1);
s.push(2);
s.push(3);
if (!s.isEmpty()) {
for (int i = s.size(); i > 0;) {
System.out.println(s.pop());
}
}
}
}
//使用链表实现栈package 栈;interface StackADT { public void push(Object element);//压栈 public Object pop();//出栈 public boolean isEmpty();//判断是否为空栈 public int size(); public Object p