用单向链表(头插法)实现栈

用单向链表(头插法)实现栈

1.概述

用单向链表实现栈,入栈时,新建一个Node结点,并把链表的最后一个Node结点指向这个新建的Node;出栈时,将最后一个结点的值用一个临时变量保存并输出,然后将结点置为null。

2.代码实现

package com.bhy.stackTest;

public class SingleLinkedListStackDemo {
    public static void main(String[] args) {
        SingleLinkedListStack singleLinkedListStack = new SingleLinkedListStack();
        singleLinkedListStack.push(1);
        singleLinkedListStack.push(2);
        singleLinkedListStack.push(3);
        System.out.println(singleLinkedListStack.pol());
        System.out.println(singleLinkedListStack.pol());
        System.out.println(singleLinkedListStack.pol());
    }
}

/**
 * 使用头插法实现
 */
class SingleLinkedListStack{
    private Node curNode ;//代表链表的最后一个元素

    public void push(int value){
        Node newNode = new Node(value, curNode);
        curNode = newNode;
    }
    public int pol(){
        if (curNode==null){
            throw new RuntimeException("栈空,不能再取");
        }
        Node thisNode = curNode;
        int temp =thisNode.value;
        thisNode = null;
        curNode = curNode.forward;
        return temp;
    }
}

class Node{
    public int value;
    public Node forward;//此节点的前一个结点

    public Node(int value, Node forward) {
        this.value = value;
        this.forward = forward;
    }
}

运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值