基于java的单链表实现栈

实现了简单的入栈出战和遍历,判断空满没做,懒的搞

package com.ran;


import java.util.Scanner;

public class hello {
    public static void main(String[] args) {

        //先创建一个栈对象
        ArrayStack stack = new ArrayStack();
        String key = "";
        boolean loop = true;//控制是否退出
        Scanner scanner = new Scanner(System.in);

        while (loop) {
            System.out.println("show:显示栈");
            System.out.println("exit:退出程序");
            System.out.println("push:添加数据到栈");
            System.out.println("pop:取出数据");
            System.out.println("请输入你的选择");
            key = scanner.next();
            switch (key) {
                case "show":
                    stack.list();
                    break;
                case "push":
                    System.out.println("请输入一个值");
                    int value = scanner.nextInt();
                    stack.push(value);
                    break;
                case "pop":
                    System.out.println("出战的数据是");
                    stack.pop();
                    break;
                case "exit":
                    scanner.close();
                    loop = false;
                    break;
                default:
                    break;
            }
        }
        System.out.println("程序退出");


    }



}
//创建栈结构
class  ArrayStack {
    public HeroNode top=null;  //数组,模拟栈,数据就放在里面


    //栈空
    public boolean isEmpty() {
        return top==null;
    }


    //入栈
    public void push(int value) {
        //先判断栈是否满
        if (isEmpty()) {
            top=new HeroNode(value);
        }
        else{
            HeroNode xin=new HeroNode(value);
            xin.next=top;
            top=xin;
        }
    }


    //出栈 将栈顶的数据返回
    public void pop() {
       if(top!=null){
           System.out.println(top.value);
           top=top.next;
       } else {
           System.out.println("meiyou");
       }
    }


    //遍历 需要从栈顶开始显示数据
    public void list() {
        if (isEmpty()) {
            System.out.println("栈空");
            return;
        }

        HeroNode temp=top;
        while (true){
            if(temp.next==null){ //仅有一个元素的时候
                System.out.println(temp.value);
                break;
            }
            System.out.println(temp.value);
            temp=temp.next;
        }
    }
}

class HeroNode{
    int value;
    HeroNode next;

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public HeroNode(int value) {
        this.value = value;
    }
}

代码运行效果如下:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值