码迷,mamicode.com
首页 > 其他好文 > 详细

链式栈的实现

时间:2014-12-11 01:30:20      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   java   on   数据   

     链表实现的栈,在想象栈的时候,最好把他竖着想象成一个立着的容器。 

     然后往里面一个一个的加节点:  

     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 = data;
16         this.next = null;
17     }
18     
19     //其它节点构造函数
20     public Node(Object data, Node next){
21         this.data = 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 data
46      */
47     public void setData(Object data){
48         this.data = 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     @Override
19     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     @Override
33     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     @Override
47     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     @Override
59     public boolean isEmpty() throws Exception {
60         return top == null;
61     }
62 
63 }

  好了,链式栈的实现是不是也很简单呢。。呵呵,欢迎继续关注算法的更新~

链式栈的实现

标签:style   blog   io   ar   color   sp   java   on   数据   

原文地址:http://www.cnblogs.com/jones-c/p/4156671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!