Java实现链式栈

来源:互联网 发布:apache cgi 配置 编辑:程序博客网 时间:2024/06/07 01:39

链式栈中每个结点SLNode都由data域和指向下一个结点的引用nextNode组成。

栈顶引用为top。

/** * 链式栈类 * @author liangxiamoyi * * @param <T> */public class LStack<T> {/** * 栈顶引用 */ private  SLNode<T> top; /**  * 构造函数  */ public LStack(){ top=null; } /**  * 判断栈是否为空  * @return  */ public boolean isEmpty(){ return top==null; } /**  * 清空栈  */ public void clear(){ while(!isEmpty()){ top=top.nextNode;  } } /**  * 压栈  * @param item 进栈元素值  * @return 成功返回true  */ public boolean push(T item){ top=new SLNode<T>(item,top); return true; } /**  * 弹栈  * @return 返回弹出元素值  */ public T pop(){ if(isEmpty()){ throw new RuntimeException("empty stack"); } SLNode<T> temp=top; top=top.nextNode; return temp.data; } /**  * 读取栈顶元素值  * @return  */ public T peek(){ if(isEmpty()){ throw new RuntimeException("empty stack"); } return top.data; } //测试 public static void main(String[] args){ LStack<Character> lstack=new LStack<Character>(); lstack.push('a'); lstack.push('b'); lstack.push('c'); lstack.push('d'); System.out.println(lstack.peek()); lstack.pop(); System.out.println(lstack.peek()); lstack.clear(); System.out.println(lstack.peek()); }}
SLNode类:
/** * 单链表结点类 * @author liangxiamoyi * * @param <T> */public class SLNode<T> {/** * 数据域 */protected T data;/** * 下一个结点 */protected SLNode<T> nextNode;/** * 构造方法 * @param node 下一结点 */public SLNode(SLNode<T> node){this.nextNode=node;}/** * 构造方法 * @param data 数据 * @param node 下一结点 */public SLNode(T data,SLNode<T> node){this.data=data;this.nextNode=node;}/** * 获得数据 * @return */public T getData(){return data; }/** * 获得下一结点 * @return */public SLNode<T> getNextNode(){return nextNode;}/** * 设置数据 * @param data */public void setData(T data){this.data=data;}/** * 设置下一结点 * @param node */public void setNextNode(SLNode<T> node){this.nextNode=node;}}

0 0
原创粉丝点击