首页 > 代码库 > 链式栈的实现
链式栈的实现
链表实现的栈,在想象栈的时候,最好把他竖着想象成一个立着的容器。
然后往里面一个一个的加节点:
1.先加入top节点
2.然后再在top节点上加入node1节点,node1节点指向top节点
3.再在node1节点上加入node2节点,node2节点指向node1节点
..........
下面描述用java实现链式栈的代码:
Stack.java 链式栈的接口
1 package com.yeyan.linkstack; 2 /** 3 * 链式栈的接口 4 * @author yeyan 5 * @date 2014-12-11 6 * API: 7 * push(Object obj) 入栈 8 * pop() 出栈 9 * getTop() 获取栈顶元素10 * isEmpty() 判断栈是否为空11 */12 public interface Stack {13 //入栈14 public void push(Object obj) throws Exception;15 //出栈16 public Object pop() throws Exception;17 //获取栈顶元素18 public Object getTop() throws Exception;19 //判断栈是否为空20 public boolean isEmpty() throws Exception;21 }
Node.java 链式栈的节点数据类型
1 package com.yeyan.linkstack; 2 /** 3 * 链表节点数据结构 4 * @author yeyan 5 * @date 2012-12-11 6 */ 7 public class Node { 8 //数据域 9 public Object data;10 //指针域,指向下一个节点11 public Node next;12 13 // 首节点构造函数14 public Node(Object data){15 this.data =http://www.mamicode.com/ data;16 this.next = null;17 }18 19 //其它节点构造函数20 public Node(Object data, Node next){21 this.data =http://www.mamicode.com/ data;22 this.next = next;23 }24 25 /**26 * 获取下一个节点27 */28 public Node getNext(){29 return this.next;30 }31 /**32 * 设置下一个节点33 */34 public void setNext(Node next){35 this.next = next;36 }37 /**38 * 获取当前节点数据39 */40 public Object getData(){41 return this.data;42 }43 /**44 * 设置当前节点数据45 * @param data46 */47 public void setData(Object data){48 this.data =http://www.mamicode.com/ data;49 }50 }
LinkStack.java 链式栈的实现类
1 package com.yeyan.linkstack; 2 /** 3 * 链式栈的实现 4 * @author yeyan 5 * @date 2012-12-11 6 */ 7 public class LinkStack implements Stack { 8 private Node top; //链式栈顶节点 9 private int size; //节点个数10 11 public LinkStack(){12 top = null;13 size = 0;14 }15 /**16 * 入栈17 */18 @Override19 public void push(Object obj) throws Exception {20 Node node = new Node(obj);21 if(isEmpty()) {22 top = node;23 } else{24 node.setNext(top);25 top = node;26 }27 size ++;28 }29 /**30 * 出栈31 */32 @Override33 public Object pop() throws Exception {34 if(isEmpty()) {35 throw new Exception("栈为空!");36 }37 Object obj = top.getData();38 top = top.getNext();39 size --;40 return obj;41 }42 43 /**44 * 获取栈顶元素45 */46 @Override47 public Object getTop() throws Exception {48 if(isEmpty()) {49 throw new Exception("栈为空!");50 }51 Object obj = top.getData();52 return obj;53 }54 55 /**56 * 判断栈节点是否为空57 */58 @Override59 public boolean isEmpty() throws Exception {60 return top == null;61 }62 63 }
好了,链式栈的实现是不是也很简单呢。。呵呵,欢迎继续关注算法的更新~
链式栈的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。