3.1.2 (2)链栈 页码P44
package hicc.ds.c02_linear2;
class LNode {
Object data;
LNode next;
public LNode(Object data) {
this.data = data;
this.next = null;
}
}
public class LinkStack {
private LNode top; //栈顶元素
public LinkStack() { //链栈初始化算法
top = null;
}
public boolean emptyLinkStack() { //链栈空判别算法
if (top == null) {
return true;
} else {
return false;
}
}
public void pushLinkStack(Object x) { //入栈算法
if (emptyLinkStack()) {
top = new LNode(x);
} else {
LNode s = new LNode(x);
s.next = top;
top = s;
}
}
public Object popLinkStack() { //出站算法
if(emptyLinkStack()) {
return null;
} else {
LNode s = top;
top = top.next;
return s;
}
}
public void showData() { //展示栈内数据
LNode p = top;
if (p == null) {
System.out.println("null");;
} else {
while (p != null) {
System.out.print(p);
System.out.print('|');
System.out.print(p.data);
System.out.print('|');
System.out.println(p.next);
p = p.next;
}
}
}
public static void main(String[] args) { //测试
LinkStack seqStack = new LinkStack();
seqStack.pushLinkStack('A');
seqStack.pushLinkStack('B');
seqStack.pushLinkStack('C');
seqStack.showData();
Object x = seqStack.popLinkStack();
System.out.println(x);
seqStack.showData();
}
}