0001 /* 0002 * 基于单链表实现栈结构 0003 */ 0004 0005 package dsa; 0006 0007 public class Stack_List implements Stack { 0008 protected Node top;//指向栈顶元素 0009 protected int size;//栈中元素的数目 0010 0011 //构造方法(空栈) 0012 public Stack_List() 0013 { top = null; size = 0; } 0014 0015 //查询当前栈的规模 0016 public int getSize() 0017 { return size; } 0018 0019 //判断是否栈空 0020 public boolean isEmpty() 0021 { return (top == null) ? true : false; } 0022 0023 //压栈 0024 public void push(Object elem) { 0025 Node v = new Node(elem, top);//创建一个新节点,将其作为首节点插入 0026 top = v;//更新首节点引用 0027 size++;//更新规模记录 0028 } 0029 0030 //读取(但不删除)栈顶 0031 public Object top() throws ExceptionStackEmpty { 0032 if (isEmpty()) 0033 throw new ExceptionStackEmpty("意外:栈空"); 0034 return top.getElem(); 0035 } 0036 0037 //弹出栈顶 0038 public Object pop() throws ExceptionStackEmpty { 0039 if (isEmpty()) 0040 throw new ExceptionStackEmpty("意外:栈空"); 0041 Object temp = top.getElem(); 0042 top = top.getNext();//更新首节点引用 0043 size--;//更新规模记录 0044 return temp; 0045 } 0046 }