数据结构(Java实现)-栈和队列


栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。
先进后出
在这里插入图片描述


在这里插入图片描述


栈的使用
在这里插入图片描述

在这里插入图片描述


栈的模拟实现
在这里插入图片描述

在这里插入图片描述
上述的主要代码

public class MyStack {private  int[] elem;private int usedSize;public MyStack() {this.elem = new int[5];}@Overridepublic String toString() {return "MyStack{" +"elem=" + Arrays.toString(elem) +", usedSize=" + usedSize +'}';}//压栈public void push(int val){if(isFull()){elem=Arrays.copyOf(elem,2*elem.length);}elem[usedSize++]=val;}public boolean isFull(){return this.usedSize==elem.length;}//出栈public int pop(){if(empty()){throw new StackEmptyException("栈内元素为空");}return elem[--usedSize];}public  boolean empty(){return usedSize==0;}//获取栈顶元素public int peek(){if(empty()){throw new StackEmptyException("栈内元素为空");}return elem[usedSize-1];}}

改变元素的序列
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


将递归转化为循环
比如:逆序打印链表
在这里插入图片描述
结果如下
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstIn First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队头(Head/Front)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


队列的使用
Queue是个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口
在这里插入图片描述
在这里插入图片描述


队列模拟实现(利用双向链表)
先考虑一般情况,再考虑特殊情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


循环队列
环形队列通常使用数组实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意事项
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码如下
在这里插入图片描述


双端队列 (Deque)
双端队列(deque)是指允许两端都可以进行入队和出队操作的队列,deque 是 “double ended queue” 的简称。那就说明元素可以从队头出队和入队,也可以从队尾出队和入队。
栈和队列均可以使用该接口。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


用栈实现队列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


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

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

相关文章

【小吉测评】哔哩哔哩接入AI?!效果如何?

文章目录 🎄前言⭐申请方式🏳️‍🌈注意 🛸简介🍔上手体验🛸进行数学计算🥰可以写代码吗 🎄前言 最近人工智能特别火,chatgpt,Claude2,文心一言等…

IP协议分片重组问题

分片是什么&&为什么会有分片 IP数据报分片的主要目的是为了防止IP数据报文长度超过下一跳链路MTU(最大传输单元)。 数据链路层之MTU 数据链路层中有一个东西叫做MTU(最大传输单元),它的作用主要是控制上层给的数据报不要太大&#…

WPF怎么实现文件拖放功能winform怎么实现拖拽功能

WPF怎么实现文件拖放功能winform怎么实现文件拖拽功能,在管理员模式下wpf winform怎么实现文件的拖拽功能 WPF实现文件拖放功能,正常情况并没有什么问题,但是如果你的程序使用管理员身份启动,你就会发现文件拖放功能就会失效。同…

MOS管开关电路栅极为什么要串接电阻

在MOS管开关电路或者驱动电路中,常常会在MOS管的栅极串接一个电阻。 这个电阻阻值一般是几十欧姆,那么这个电阻有什么作用呢? 第一个作用就是可以限制驱动电流 ,防止瞬间驱动电流过大导致驱动芯片驱动能力不足或者损坏。 MOS管的…

Mybatis缓存

缓存(cache)的作用是为了减去数据库的压力,提高查询性能。缓存实现的原理 是从数据库中查询出来的对象在使用完后不要销毁,而是存储在内存(缓存)中, 当再次需要获取该对象时,直接从内存&#xf…

性价比高的照明品牌,五大性价比高的照明品牌台灯推荐

很多家长有时候会说孩子觉得家里的台灯灯光刺眼,看书看久了就不舒服。这不仅要看光线亮度是否柔和,还要考虑台灯是不是有做遮光式设计。没有遮光式设计的台灯,光源外露,灯光会直射孩子头部,孩子视线较低,很…

安达发|模拟车间模型生成生产排产计划

根据车间模型生成排产计划的一般程序可简单地描述为下面6个步骤。 1. 建模 车间模型必须详细地捕捉生产流程的特征和相应的物流,以便以最小的成本生成可行的计划。由于一个系统的产出率只受潜在瓶颈资源的限制,因此,我们只需对车间现有全部资…

成都睿趣科技:抖音开网店前期的流程是什么

随着互联网的快速发展,电子商务成为了商业领域中的一大利器,而在电商领域中,抖音作为一个强大的平台,也吸引了众多商家的目光。然而,要在抖音上开设一家成功的网店,并不是一件简单的事情,需要经…

网络字节序——TCP接口及其实现简单TCP服务器

网络字节序——TCP接口及其实现简单TCP服务器 文章目录 网络字节序——TCP接口及其实现简单TCP服务器简单TCP服务器的实现1. 单进程版:客户端串行版2. 多进程版:客户端并行版netstat查看网络信息3.多线程版:并行执行log.hpp 守护进程fg、bg s…

【GO】LGTM_Grafana_Tempo(2)_官方用例改后实操

最近在尝试用 LGTM 来实现 Go 微服务的可观测性,就顺便整理一下文档。 Tempo 会分为 4 篇文章: Tempo 的架构官网测试实操跑通gin 框架发送 trace 数据到 tempogo-zero 微服务框架使用发送数据到 tempo 根据官方文档实操跑起来 tempo,中间根…

几个nlp的小任务(生成式任务——语言模型(CLM与MLM))

@TOC 本章节需要用到的类库 微调任意Transformers模型(CLM因果语言模型、MLM遮蔽语言模型) CLM MLM 准备数据集 展示几个数据的结构

Linux 虚拟机同步时间crontab以及crond详解

目录 一 Linux 虚拟机同步时间设置 1. 检查是否安装cron服务(即时间同步器) 2. 下载时间同步器 3. 编辑crontab 内容 4. 同步更新电脑网络时间 5.设置 reload 6. 查看 crond 状态 二 crond 详解 1. 启动/关闭cron服务 2. crontab命令格式 3. …