数据结构 - 栈(链表实现栈的入栈出栈)

学完链表和栈,数组模拟栈学完后,自己根据链表写了个链栈,虽然只是简单的实现了入栈出栈遍历。收获还是很大的。

在push这里思考了一会,思路是:传入一个数字,push里创建一个节点node,把数据加入node里,让head.next指向node(新节点),然后让node.next指向top,把node再换成top。

**package stack;

public class LinkedListStackDemo {
    public static void main(String[] args) {
        SingleLinkedList singleLinkedList = new SingleLinkedList();
        singleLinkedList.push(1);
        singleLinkedList.push(2);
        singleLinkedList.push(3);
        singleLinkedList.push(4);
        singleLinkedList.push(5);

        singleLinkedList.show();
        singleLinkedList.pop();
        singleLinkedList.pop();
        singleLinkedList.pop();
        
    }
}

//链栈
class SingleLinkedList {
    private Node top;
    private static int size;

    //初始化栈
    public SingleLinkedList() {
        size = 0;
    }

    private Node head = new Node();

    //空
    public boolean isEmpty() {
        return head.next == null;
    }

    //入栈
    public void push(int data) {
    
        Node temp = new Node();
        temp.setData(data);
        head.next = temp;
        temp.next = top;
        top = temp;
        size++;
    }

    //出栈
    public void pop() {
        if (isEmpty()) {
            System.out.println("栈空");
            return;
        }
        System.out.println("出栈的是:" + top.getData());
        head.next = top.next;
        top = top.next;
        size--;
    }

    //遍历输出
    public void show(){
        if (isEmpty()){
            System.out.println("栈空");
            return;
        }

        Node temp = head.next;
        for (int i = 1; i <= size; i++){
            System.out.printf("栈的第 %d 个元素是:%d\n",i,temp.getData());
            temp = temp.next;
        }
    }
}

//数据类
class Node{
    private int data;
    public Node next;

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "Node{" +
                "data=" + data +
                '}';
    }
}
**
结果:

栈的第 1 个元素是:5
栈的第 2 个元素是:4
栈的第 3 个元素是:3
栈的第 4 个元素是:2
栈的第 5 个元素是:1
出栈的是:5
出栈的是:4
出栈的是:3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值