当前位置: 首页 > article >正文

数据结构--链表实现栈和队列

引入

在数据结构--数组实现栈和队列-CSDN博客这篇文章中我们已经用数组实现了栈和队列,那么我们再练习一下链表实现吧!o(* ̄▽ ̄*)ブ

既然是链表,那么前提给出一个创建节点的封装类:

public class Node {
    int data;
    Node next;
    public Node(){
        //空构造函数
    }
    public Node(int data){
        this.data=data;
        this.next=null;
    }
    @Override
    public String toString() {
        return (this.next == null) ?  this.data + " " :  this.data + " " + this.next.toString();
    }
}

1.用链表实现入栈和出栈

public class ListStack {
  private Node top;
  //入栈(链表)
  public void put(int value){
      Node newNode=new Node(value);
      newNode.next=top;
      top=newNode;
      System.out.println("入栈成功!");
  }
  //出栈
    public void get(){
      if(top==null){
          System.out.println("栈已经空了!");
          return;
      }
        System.out.println(top.data);
        top=top.next;
    }
}

一个测试Main:

public class Test {
    public static void main(String[] args) {
        ListStack stack=new ListStack();
        stack.put(4);
        stack.put(3);
        stack.put(6);
        stack.put(1);

        stack.get();
        stack.get();
        stack.get();
        stack.get();
        stack.get();

    }
}

得到结果:

2.用链表实现入队和出队

public class ListQueue {
    private Node left;
    private Node right;

    public void put(int value){
        Node newNode=new Node(value);
        if(left==null&&right==null){
            left=newNode;
            right=newNode;
            System.out.println("入队成功");
            return;
        }
        left.next=newNode;
        left=newNode;
        System.out.println("入队成功");
    }
    public void get(){
        if(right==null){
            System.out.println("队列已空!");
            return;
        }
        System.out.println(right.data);
        right=right.next;

    }
}

得到结果:


http://www.kler.cn/a/408754.html

相关文章:

  • uni-app 界面TabBar中间大图标设置的两种方法
  • Go语言反射(Reflection)详解:探索reflect包中的Type和Value
  • ReactPress(阮一峰推荐工具):一款基于Next.js的免费开源博客CMS系统
  • 搜索引擎中广泛使用的文档排序算法——BM25(Best Matching 25)
  • 【C】错误的变量定义导致sprintf()‌输出错误
  • Vue.js 插槽 Slots 实际应用 最近重构项目的时候遇到的...
  • 构建功能完备的Flask Web应用
  • Flink转换算子——flatMap/map/filter/keyby/reduce综合案例
  • meterpreter常用命令 上
  • Python爬虫:如何优雅地获取1688商品详情接口
  • 使用windows窗口展示go-echarts图表
  • Stable Diffusion中的自注意力替换技术与Diffusers实现
  • React中Ant Design组件日期编辑回显
  • 【FPGA开发】Vivado自定义封装IP核,绑定总线
  • ajax (一)
  • timm库加载的模型可视化
  • 【Python-办公自动化】实现自动化输出模板表格报告
  • MongoDB 中设置登录账号密码可以通过以下步骤实现
  • 基于SSM的婚庆管理系统+LW示例参考
  • 了解rk3588单片机
  • 大模型工程化部署:使用FastChat部署基于OpenAI API兼容大模型服务
  • 应用案例 | 西门子能源选用ASPION G-Log 2冲击记录仪,揭秘高压开关设备运输背后的安全保障
  • UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取
  • 零基础学指针(上)
  • Python爬取豆瓣电影全部分类数据并存入数据库
  • 【大数据学习 | Spark-Core】关于distinct算子