前面學習了java實現順序棧:http://www.cnblogs.com/lixiaolun/p/4644134.html
接下來,學習java實現鏈棧。
鏈棧類代碼:
package linkedstack; public class LinkStack { private Element base; private Element top; class Element { public Object data; public Element next; } /** * 初始化棧 * */ void initStack() { top = new Element(); base = new Element(); top.data=null; top.next=base; base.data=null; base.next=null; } /** * 入棧 * */ void push(Object o) { Element e = new Element(); e.data = o; if(top.next==base)//第一次入棧操作 { e.next=base; top.next=e; }else { e.next=top.next; top.next=e; } } /** * 出棧 * */ void pop() { if(top.next==base) { System.out.println("棧中沒有元素!"); }else { System.out.println("出棧操作"+top.next.data); top.next=top.next.next; } } /** * 打印棧 * */ void print() { System.out.print("打印棧:"); Element temp =top; while(temp.next!=base) { System.out.print(temp.next.data+"\t"); temp =temp.next; } System.out.println(); } }
鏈棧測試類代碼:
package linkedstack; public class LinkStackMain { public static void main(String[] args) { LinkStack lStack = new LinkStack(); lStack.initStack(); lStack.pop(); lStack.push(1); lStack.push(2); lStack.push(3); lStack.push(4); lStack.print(); lStack.pop(); lStack.pop(); lStack.print(); lStack.pop(); lStack.pop(); lStack.print(); lStack.pop(); } }