普通队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。
package com.algorithm; /** * 普通队列 * @author lenovo *队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作, *和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 *在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素, *因此队列又称为“先进先出”(FIFO—first in first out)的线性表。 */ public class MyQueue { /** * 底层使用数据 */ private long[] attr; /** * 有效数据的大小 */ private int elements; /** * 队头 */ private int front; /** * 队尾 */ private int end; /** * 默认构造方法 */ public MyQueue(){ attr =new long[10]; elements =0; front =0; end =-1; } /** * 带参数构造方法,初始化队列大小 */ public MyQueue(int maxsize){ attr =new long[maxsize]; elements =0; front =0; end =-1; } /** * 添加数据,插入到队尾 * @param value */ public void intsert(long value){ attr[++end]=value; elements++; } /** * 删除数据,从对头开始 */ public long remove(){ elements--; return attr[front++]; } /** * 查看数据 */ public long peek(){ return attr[front]; } /** * 判断是否为空 * @return */ public boolean isEmpety(){ return elements==0; } /** * 判断是否满了 * @return */ public boolean isFull(){ return elements==attr.length; } public static void main(String[] args) { MyQueue mq = new MyQueue(4); mq.intsert(23); mq.intsert(45); mq.intsert(13); mq.intsert(1); System.out.println(mq.isFull()); System.out.println(mq.isEmpety()); System.out.println(mq.peek()); System.out.println(mq.peek()); while (!mq.isEmpety()) { System.out.print(mq.remove()+" "); } mq.intsert(23); } }
循环队列
为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。
package com.algorithm; /** * 循环队列 * @author lenovo *为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环, *并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。 */ public class MyCycleQueue { /** * 底层使用数据 */ private long[] attr; /** * 有效数据的大小 */ private int elements; /** * 队头 */ private int front; /** * 队尾 */ private int end; /** * 默认构造方法 */ public MyCycleQueue(){ attr =new long[10]; elements =0; front =0; end =-1; } /** * 带参数构造方法,初始化队列大小 */ public MyCycleQueue(int maxsize){ attr =new long[maxsize]; elements =0; front =0; end =-1; } /** * 添加数据,插入到队尾 * @param value */ public void intsert(long value){ if (end==attr.length-1) { end=-1; } attr[++end]=value; elements++; } /** * 删除数据,从对头开始 */ public long remove(){ long value = attr[front++]; if(front==attr.length){ front=0; } elements--; return value; } /** * 查看数据 */ public long peek(){ return attr[front]; } /** * 判断是否为空 * @return */ public boolean isEmpety(){ return elements==0; } /** * 判断是否满了 * @return */ public boolean isFull(){ return elements==attr.length; } public static void main(String[] args) { MyCycleQueue mq = new MyCycleQueue(4); mq.intsert(23); mq.intsert(45); mq.intsert(13); mq.intsert(1); System.out.println(mq.isFull()); System.out.println(mq.isEmpety()); System.out.println(mq.peek()); System.out.println(mq.peek()); while (!mq.isEmpety()) { System.out.print(mq.remove()+" "); } System.out.println(); mq.intsert(23); mq.intsert(13); mq.intsert(122); System.out.println(mq.peek()); while (!mq.isEmpety()) { System.out.print(mq.remove()+" "); } } }
相关推荐
李白高力士脱靴李白贺知章告别课本剧.pptx
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
C语言项目之超级万年历系统源码,可以做课程设计参考 文章参考:https://www.qqmu.com/4373.html
Jupyter-Notebook
51单片机加减乘除计算器系统设计(proteus8.17,keil5),复制粘贴就可以运行
《中国房地产统计年鉴》面板数据资源-精心整理.zip
Jupyter-Notebook
Jupyter-Notebook
毕业论文答辩ppt,答辩ppt模板,共18套
Jupyter-Notebook
《中国城市统计年鉴》面板数据集(2004-2020年,最新).zip
Python基础 本节课知识点: • set的定义 • Set的解析 • set的操作 • set的函数
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
兵制与官制研究资料最新版.zip
Jupyter-Notebook
七普人口数据+微观数据+可视化+GIS矢量资源-精心整理.zip
Support package for Hovl Studio assets.unitypackage
土壤数据库最新集.zip
Jupyter-Notebook
1991-2020年中国能源统计年鉴-能源消费量(分省)面板数据-已更至最新.zip