java 实现链栈存储的方法

时间:2022-09-08 09:29:47

如下所示:

java" id="highlighter_606479">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.learn.algorithm.linkStack;
/**
 * 链栈实现
 * @author Jiekun.Cui
 * @param <T>
 */
public class LinkStack<T> {
 
  private LinkStack<T>.Node<T> top = new Node<T>();
  private int size=0;
  
  /**
   * 进栈
   * @param t
   * @return ;
   */
  public boolean push(T t){
    
    if ( isEmpty() ) {
      top.next = new Node<T>(t);
      
    } else {
      Node<T> newNode = new Node<T>(t, top.next);
      top.next = newNode;
    }
    size ++ ;
    return true;
  }
  
  /**
   * 出栈
   * @param t
   * @return
   */
  public T pop(){
    
    if ( isEmpty() ) {
      return null;
    } else {
      LinkStack<T>.Node<T> node = top.next;
      top.next = node.next;
      size --;
      return node.getT();
    }
  }
  
  
  /**
   * 获取栈顶元素
   * @return
   */
  public T getTop(){
    if ( isEmpty() ) {
      return null;
    } else {
      return top.next.getT();
    }
  }
  
  
  /**
   * 判断栈是不是为空
   * @return
   */
  public boolean isEmpty(){
    return size() == 0;
  }
  
  /**
   * 返回栈的大小
   * @return
   */
  public int size(){
    return size;
  }
  
  
  
  
  /**
   * @author 链栈的节点类
   * @param <T>
   */
  class Node<T>{
    private T t = null;
    private Node<T> next = null;
    
    public Node(){
      
    }
    public Node(T t){
      this.t = t;
    }
    public Node(T t,Node<T> next){
      this.t = t;
      this.next =next;
    }
    
    
    public T getT() {
      return t;
    }
    public void setT(T t) {
      this.t = t;
    }
    
    public Node<T> getNext() {
      return next;
    }
    public void setNext(Node<T> next) {
      this.next = next;
    }
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.learn.algorithm.linkStack;
 
/**
 * 链栈测试
 * @author Jiekun.Cui
 */
public class Demo {
  
  public static void main(String[] args) {
    LinkStack<Integer> ls = new LinkStack<>();
    
    ls.push(1);
    ls.push(2);
    ls.pop();
    ls.push(4);
    ls.push(5);
    ls.push(6);
    
    
    while ( !ls.isEmpty() ) {
      System.out.println(ls.pop());
    }
    
  }
 
}

以上这篇java 实现链栈存储的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/Jiekun-Cui/archive/2017/08/13/7354533.html