ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第二次作业

2022-01-15 09:30:40  阅读:165  来源: 互联网

标签:cur 队列 双端 元素 作业 front 第二次 rear


在这里插入图片描述
双端栈
定义:指的是一个线性表的两端当作栈低,分别进行入栈出栈操作,栈底位置不变。而栈顶位置动态变化
双端站是一种线性表,也是栈的一个特殊分类,因此可以用动态数组和栈的思想来实现双端站
在这里插入图片描述
双端栈的扩容与缩容
扩容:
在这里插入图片描述
就是把两端的元素再分配到新栈的两端
缩容:
在这里插入图片描述
条件是在只占四分之一的情况下进行,且缩小后的length要大于默认值
在这里插入图片描述
队列
定义:只允许在一端进行插入操作,在另一端进行删除操作的线性表,且删除的一段称为队首,插入的一端称为队尾
空队列:不含任何元素的队列
入队:offer
出队:poll
判断两队列是否相等
在这里插入图片描述
只有当两个队列中的所有元素相等,两个队列才相等

栈实现队列
需要两个栈
stackA 存放元素
stackB存放临时元素
要实现第一个元素出来,先要后面的元素先出栈到临时B栈,让第一个元素出栈,然后再回到A栈,就实现了队列的操作

队列实现栈
同理,就是先建立两个队列,一个存数据,
一个临时存数字,
队列A元素先出队,存到队列B,剩下一个元素,就可以出队
然后队列B中的元素就可以回到队列A中

循环队列:
为实现队列队首的动态移动,而不浪费空间,
提出了一种名为循环队列的存储方法
设队首元素为front,队尾元素为rear,
为了区分队列是否满或空,因此需要
将rear指向空地址,来区分队满队空
队满:(rear + 1)%data.length
队空:rear=front
扩容操作:将原来的data重新排列,从芙蓉厅=0开始到size=rear-1结束在这里插入图片描述
队首的删除操作
在这里插入图片描述

队尾的插入操作
在这里插入图片描述
迭代器Iterator:定义cur
令cur = front,且cur不能等于rear
移动循环就是cur=(cur+1)%data.length
在这里插入图片描述

双端队列
是限定插入和删除操作在两端进行的线性表
是一种具有队列和栈的性质的数据结构
大致同循环队列一样:
在这里插入图片描述
区别是:队首的插入操作
front先移动到front-1处,然后让元素再进去
代码实现:在这里插入图片描述
队尾的删除操作:rear处先进一个元素,然后再把rear向后移动一位
代码实现:在这里插入图片描述
其次还要实现的是栈的功能,因此需要写关于栈的函数push和pop等
在这里插入图片描述

标签:cur,队列,双端,元素,作业,front,第二次,rear
来源: https://blog.csdn.net/pluto_ian/article/details/122502510

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有