数据结构Java版(5)——链栈和链队列的实现

          之前我们对链表进行了讲解,这次我们来用链表的方式来实现栈和队列两个接口,来加深我们对链表的理解。

一、链栈

        栈的接口与顺序栈的接口相同,这里我们主要展示如何用我们自己写的链表来实现这个接口,代码展示如下:

接口实现类

public class LinkedStack<T> implements Stack_i<T>{private LinkedList<T> stack;public LinkedStack() {this.stack = new LinkedList<>();}@Overridepublic boolean push(T e) {return stack.addFirst(e);}@Overridepublic T pop() {return stack.removeFirst();}@Overridepublic T peek() {return stack.getFirst();}@Overridepublic int getLength() {return stack.getLength();}@Overridepublic boolean isEmpty() {return stack.isEmpty();}
}

对我们的链栈进行测试

import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class testMyStack {public static void test(Stack_i<Integer> stack, List<Integer> list){Random random = new Random();for(int i = 0;i < 10;i++){stack.push(random.nextInt(1000));System.out.println(stack.peek()+"——现在还有"+stack.getLength()+"个元素");}Integer temp;while ((temp = stack.pop())!=null){list.add(temp);}System.out.println();}public static void main(String[] args) {List<Integer> list = new ArrayList();Stack_i<Integer> stack = new LinkedStack<>();test(stack,list);for (Integer i:list) {System.out.println(i);}}
}

输出结果:

二、链队列

         这里接口也是与顺序队列的相同,直接进行代码展示:

接口实现类

public class LinkedQueue<T> implements Queue_i<T>{private LinkedList<T> queue;public LinkedQueue() {this.queue = new LinkedList<T>();}@Overridepublic boolean offer(T e) {return queue.addFirst(e);}@Overridepublic T poll() {return queue.removeLast();}@Overridepublic T peek() {return queue.getFirst();}@Overridepublic int getLength() {return queue.getLength();}@Overridepublic boolean isEmpty() {return queue.isEmpty();}@Overridepublic T peekLast() {return queue.getLast();}
}

对我们的链队列进行测试

import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class testMyQueue {public static void test(Queue_i<Integer> queue){List<Integer> list = new ArrayList();Random random = new Random();for(int i = 0;i < 16;i++){queue.offer(random.nextInt(100));System.out.println(queue.peek()+"——现在还有"+queue.getLength()+"个元素");}Integer temp;for(int i = 0;i < 2;i++){System.out.println(queue.poll());}for(int i = 0;i < 5;i++){queue.offer(random.nextInt(100));System.out.println(queue.peek()+"——现在还有"+queue.getLength()+"个元素");}while ((temp = queue.poll())!=null){list.add(temp);}for (Integer i:list) {System.out.println(i);}}public static void main(String[] args) {Queue_i<Integer> queue = new LinkedQueue<>();test(queue);}
}

输出结果:

三、总结

          在日常使用中,链队列用的多一点,且在链队列之上,又有了双端队列等应用,说明链表在Java中十分重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI-数学-高中-8-函数奇偶性

原作者视频&#xff1a;函数】6函数奇偶性&#xff08;易-中档&#xff09;_哔哩哔哩_bilibili 示例&#xff1a; 已知奇偶性求解析式&#xff1a; 奇偶、单调函数综合示例&#xff1a;

黑马程序员——javase进阶——day01——匿名对象 , 继承 , 抽象类

目录&#xff1a; 面向对象回顾 面向对象的核心思想是什么?现有的类还是先有的对象?Java类的创建?类中的组成成分?创建对象所使用的关键字?创建对象的格式?调用对象的成员?定义构造方法的格式?定义构造方法的特点?构造方法的作用?面向对象三大特征是什么?封装的思想…

Java面试题:如何实现线程循环切换?

嗨大家好&#xff0c;我是小米&#xff01;今天我们要聊一个非常有趣的话题——社招面试题&#xff1a;Java中如何实现线程循环切换&#xff1f;大家都知道&#xff0c;在Java中处理多线程是一项非常常见而又重要的任务&#xff0c;而线程的循环切换更是其中的一大亮点。那么&a…

【图神经网络】GNNExplainer代码解读及其PyG实现

GNNExplainer代码解读及其PyG实现 使用GNNExplainerGNNExplainer源码速读前向传播损失函数 基于GNNExplainer图分类解释的PyG代码示例参考资料 接上一篇博客图神经网络的可解释性方法及GNNexplainer代码示例&#xff0c;我们这里简单分析GNNExplainer源码&#xff0c;并用PyTor…

基于sentinel-2 遥感数据的水体提取(水体指数法)

本文框架设置如下&#xff1a; 简单介绍senintel-2数据&#xff1b;如何利用sentinel-2数据获取水体边界/范围 1 Sentinel-2数据介绍及下载方式 有Sentinel-2A/2B两颗卫星&#xff0c;其参数基本一致&#xff0c;因此两颗卫星的数据联合使用很方便。 分辨率有&#xff1a;1…

Laya2.13.3接入FGUI

下载与复制文件与Laya1.x类似&#xff0c;可以看我上一篇&#xff1a; Laya1.8.4接入FariyGui&#xff0c;以及其中踩的坑-CSDN博客 不同的是&#xff1a; 两个库文件需要在index.js中引入 新建一个脚本将fgui中搭建好的UI包引入&#xff1a; export default class GameApp…

食品加工厂可视化视频AI智能监管方案,助力工厂数字化运营

一、背景与需求分析 随着科技的不断进步和人们对食品安全和质量的日益关注&#xff0c;食品智慧工厂的建设成为了食品行业的一个重要趋势。智能化的食品工厂可以利用先进的技术和自动化系统&#xff0c;提高生产效率、降低监管成本&#xff0c;并确保产品的质量和安全。 行业…

Python爬虫——2023年西安全年气温数据并进行可视化处理

Python爬虫——2023年西安全年气温数据并进行可视化处理 一、网站选择 我们要找到西安历史气温数据&#xff0c;可以去一些天气网站上查找&#xff0c;但不一定每一个天气网站都会留有各城市的历史天气数据&#xff0c;因此我在这里给大家推荐两个网站方便大家进行历史气温的…

牛客30道题解析精修版

1.异常处理 都是Throwable的子类&#xff1a; ① Exception&#xff08;异常&#xff09;:是程序本身可以处理的异常。 ② Error&#xff08;错误&#xff09;: 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时&#xff0c;一般不需要…

选择国产压测工具应注意什么?

随着互联网和信息技术的飞速发展&#xff0c;压力测试成为了确保软件系统稳定性和性能的不可或缺的环节。在压测工具的选择上&#xff0c;近年来国产压测工具逐渐崭露头角&#xff0c;但在使用时仍需谨慎。本文将探讨在选择国产压测工具时需要注意的关键因素。 功能完备性&…

GBASE南大通用数据库GBase 8s常见问题解析 -- 查找锁会话并解锁

本文摘自GBASE南大通用社区&#xff0c;by&#xff1a;wty&#xff0c;原文请点击&#xff1a;GBase 8s常见问题 -- 查找锁会话并解锁|GBASE社区|天津南大通用数据技术股份有限公司|GBASE-致力于成为用户最信赖的数据库产品供应商 问题现象 执行SQL时报错 244: Could not do…

电脑f盘满了怎么清理f盘空间?3个实用的方法!

磁盘空间的大小直接影响到计算机的性能和存储能力。当磁盘空间不足时&#xff0c;会导致系统运行缓慢、无法安装新的程序或存储文件&#xff0c;甚至会使计算机系统崩溃。那么如何解决磁盘空间不足的问题呢&#xff1f;下面提供了一些方法。 方法一&#xff1a;删除不需要的文…

跟着pink老师前端入门教程-day09

二十二、定位 22.1 为什么需要定位 1. 某个元素可以自由的在一个盒子内移动位置&#xff0c;并且压住其他盒子 2. 当我们滚动窗口时&#xff0c;盒子是固定屏幕某个位置的 解决方法&#xff1a; 1. 浮动可以让多个块级盒子一行没有缝隙排列显示&#xff0c;经常用于横向排…

STL第三讲

第三讲 stl六大部件&#xff1a;算法是函数模板&#xff0c;其他的是类模板 算法形式&#xff1a;传入两个迭代器&#xff08;第三个参数可能有&#xff1a;一个比较的准则 算法需要的所有信息从迭代器获取 迭代器分类 基于红黑树的结构是双向迭代器&#xff1b; 基于hash的取…

【计算机网络】UDP协议与TCP协议

文章目录 一、端口号1.什么是端口号2.端口号范围划分3.认识知名端口号(Well-Know Port Number)4.netstat5.pidof 二、UDP协议1.UDP协议端格式2.UDP的特点3.面向数据报4.UDP的缓冲区5.UDP使用注意事项6.基于UDP的应用层协议 三、TCP协议1.TCP协议段格式1.1理解封装解包和分用1.2…

进程通信与socket编程实践之猜数字小游戏

socket是实现进程通信的一种重要方式&#xff0c;本文将通过socket编程实现服务器进程与客户端进程之间的通信&#xff0c;并在通信之外实现猜数字的小游戏。 1. 设计思路 本文设计的C/S结构的猜数字游戏功能如下&#xff1a;服务器端自动生成一个1-100之间的随机数字&#x…

100T数据存进服务器分几步?

大家好&#xff0c;我是豆小匠。 这期来聊聊数据存储相关的问题&#xff0c;包括&#xff1a; 容量评估。技术选型。容灾处理。 另外&#xff0c;文末赠送免费定制红包封面哦&#xff01; 1. 容量评估 通过对容量&性能的评估&#xff0c;可以把业务需求转化成技术语言描…

鲲鹏微认证——openEuler开源操作系统迁移实践

文章目录 为什么要系统搬迁为什么选择欧拉欧拉系统迁移概述实施路径工具实战 为什么要系统搬迁 2020年12月&#xff0c;CentOs作为由开源社区免费提供的操作系统&#xff0c;宣布将对CentO58于2021年底停止服务&#xff0c;CentO57则于2024年6月底停止服务。 这将直接导致操作…

Linux系统SSH远程管理服务

目录 一、SSH服务介绍 1、SSH协议是什么&#xff1f; 2、SSH的优点 3、SSH的客户端与服务端 4、SSH的原理 4.1 公钥首次连接原理 4.2 ssh加密通讯原理 4.2.1 对称加密 4.2.2 非对称加密 4.2 ssh远程登录 二、服务端配置 1、常见配置项 1.1 修改默认端口 1.2 禁止…

未来已来:AI引领智能时代的多领域巨变

大家好&#xff0c;今天我们将深入探讨人工智能如何彻底改变我们的生活方式&#xff0c;领略未来的无限可能性。 1. 医疗革新&#xff1a;AI担任超级医生 医疗领域是AI最引人注目的战场之一。智能医学影像诊断系统&#xff0c;不仅能够精准识别病变&#xff0c;还能辅助医生提…