java实现链栈

1.什么是链栈
1.链栈的结构和链表相似
2.插入与删除等操作都是在链表的头部
3.即:链栈是一个以top为头结点、从栈顶指向栈底的单链表
2.链栈的优缺点
解决了栈空间大小固定的弊端。
3.实现思路和注意要点
因为链栈本质上还是一个单链表,是由一个个结点组成的链表,所以还是采用内部类的方式实现。创建一个Node类,定义了Node next用来存放上一个入栈的结点的首地址和String data用来存放当前入栈的数据;在外部Stack类定义对Node的操作方法,入栈,弹栈等。外部类不能实例化内部类。
1.在Stack类里面要定义一个count,用来计数栈中结点的个数,定义一个 Node top,是对象的引用,用于指向栈顶结点。
2.入栈操作,调用入栈方法,就需要申请一个结点,调用Node的有参构造方法,将数据data传入进去,然后将top存储的头结点地址赋值给node.next,这样新增加的节点就指向了它前一个入栈的结点,最后再将新入栈的结点的首地址赋值给top,这样top就更新了,指向了新的头结点。
3.弹栈操作,需要将top指向弹栈结点的下一个结点,这里需要注意的是,一定要定义一个中间变量用来暂存当前top的值,返回弹栈数据冲突。
Stack类:
 1 package chainStack;
 2 /**
 3 * @类名  stack.java
 4 * @作者       修仙小华
 5 * @版本  V1.0
 6 * @日期  2019年7月24日-上午9:13:10
 7 * @描述  
 8 *
 9 */
10 public class Stack {
11     int count=0;
12     Node top;
13 
14     public void push(String data) {
15         Node node=new Node(data);
16         node.next=top;
17         count++;
18         top=node;
19     }
20     public String peek() {
21         return top.data;
22     }
23     public String pop() {
24         Node temp=top;
25         if (top.next==null) {
26             top=null;
27         }else {
28             top=top.next;
29         }
30         this.count--;
31         return temp.data;
32     }
33     public int size() {
34         return this.count;
35     }
36     public boolean isEmpaty() {
37         if (top==null) {
38             return true;
39         }else {
40             return false;
41         }
42     }
43     class Node{
44         String data;
45         Node next;
46         public Node() {}
47         public Node(String data) {
48             this.data=data;
49         }
50     }
51 }

测试类:

 1 public class StackTest {
 2     public static void main(String[] args) {
 3         Stack sta=new Stack();
 4         sta.push("张三");
 5         sta.push("李四");
 6         sta.push("王二");
 7         sta.push("麻子");
 8         System.out.println(sta.pop());
 9         System.out.println(sta.peek());
10         System.out.println(sta.isEmpaty());
11         System.out.println(sta.size());
12 
13     }
14 
15 }
 

猜你喜欢

转载自www.cnblogs.com/had1314/p/11267982.html