今天又回顾了原来队列那节,自己重新把代码敲了一遍,但是还是犯了一些小小的错误,但是还是收获了,对队列有了近一步的认识。在此几下仅仅为了更好的理解。
错误分析:
这个错误真的是犯得太幼稚了,而且还犯了两次。在需要用到循环语句的地方,我这样用:
然后我打印了输出队列的长度:
结果是:
后来自己就把代码重新检验了一遍发现也没有什么问题,突然才想到原来if语句只是七判断的作用,但这里的真正的用意在于循环下去直到找到最后一个为空的为止。如果用if语句,这块代码只能执行一次,count只能加一次,所以长度为1。而我们常用的循环语句主要有三类:while语句,do-while语句和for语句。这里就不再详细介绍了,因为用法很简单。所以把代码中的if改为while时,输出结果为:
这样问题就解决了!!!
在队列这一块中,主要的是抓住队列的特点。队列是通过前后连接的关系来解决添加、删除、插入数据等的方法。但是再这个过程中,有涉及到需要在队列中找到相对应的下标,这个的方法是这样的:比如说在插入数据的方法中:
//插入元素 public void insert(int index,Object obj){ if(index < 0 || index >= size()){//先判断index是否越界 throw new ArrayIndexOutOfBoundsException("超出范围:"+size()); } Node node = new Node(); node.setData(obj); if(root == null){ root = node; lastNode = node; }else{ if(index == 0){ node.setNext(root); node = root; return; } //找到对应的index下标 int count =0; Node indexNode = root; Node prevNode = root; while(index != count){ prevNode = indexNode; count ++; indexNode = indexNode.getNext(); } node.setNext(indexNode); prevNode.setNext(node); } }
所以解决这个问题的话,队列的实现就像用数组去实现是一样的简单。虽然写的有点简单,有点幼稚,算是对这里的深入理解吧。
相关推荐
在计算机科学中,数据结构是组织和管理大量数据...通过对这两个实现的比较和分析,不仅可以巩固队列数据结构的理解,还可以加深对C语言指针和内存管理的认识。同时,这也为扩展到其他数据结构和算法的学习奠定了基础。
在实际操作STM32CubeMX和FreeRTOS时,需要对项目中每个步骤的配置有清晰的认识,并理解在代码层面上这些配置是如何被实现的。例如,对于任务优先级的理解,一个任务的优先级决定了它相对于其他任务的执行顺序;对于...
杨辉三角,又称帕斯卡三角,是一种在数学中广泛使用的几何序列,它不仅与组合数学密切相关,还在二项式定理、...这种方法不仅可以帮助我们理解队列的作用,还能加深对杨辉三角性质的认识,为后续的学习和开发提供启示。
### 关于栈、队列和数组的初步认识 本文旨在为初学者提供关于栈、队列和数组的基础知识,特别是针对那些对C++/C语言有一定了解的学习者。通过本篇内容,读者能够建立起对这些基本数据结构的概念,并掌握它们的基本...
#### 二、认识BlockingQueue **1. 阻塞队列概念** - **定义**:阻塞队列是一种特殊的队列,除了具有队列的基本特性外,还提供了额外的阻塞行为,即当队列空时,从队列中获取元素的操作将会阻塞,等待队列变得非空...
博文c 中老师详细介绍了几种消息队列的 业务场景,是我所看的所有业务场景描述中最为详细,清晰的,结合博文a 老师的整体思路,对消息队列的实现上有了较为清晰的认识。 整体思路在博文a 中老师已经介绍,及依靠 ...
《数据结构 严蔚敏 C语言版 链队列表示与实现》是关于计算机科学中数据结构领域的一本经典教材。...通过《数据结构 严蔚敏 C语言版》的学习,读者将对链队列有深入的认识,并能够在实际项目中灵活运用。
总的来说,合工大的这次数据结构实验将带你深入理解队列的原理和实现,通过实践加深对这一基础数据结构的认识,从而更好地应对复杂计算问题的挑战。在实验过程中,你不仅会学习到理论知识,还会提升编程能力和问题...
简单实现消息队列,能够做到创建消息队列,获取消息队列,对于像我一样的萌新,可以快速的学习Socket,并对他的应用有一定的认识,方便快速上手消息队列,本人技术有限,可能不够完善,欢迎留言补充,欢迎大佬指教。
数据结构 栈和队列 教你重新认识栈和队列
实验目的 通过模拟多级反馈队列算法的调度过程,加深对处理机调度算法的理解。 实验内容 编写一个C语言程序,模拟多级反馈队列调度算法。 ... 经过实验,加深了我对多级反馈队列调度算法的认识。
在操作系统领域,进程管理和调度是核心内容...通过理论学习和实践操作,不仅可以提升我们对操作系统原理的认识,也有助于提高解决实际问题的能力,这对于从事IT行业,尤其是系统开发和运维人员来说,是非常宝贵的技能。
通过编写和测试代码,对队列的逻辑和链式结构有了更直观的认识,同时,菜单驱动的交互方式也增强了程序的实用性和用户体验。这样的实践对于深化对数据结构的理解,尤其是队列这种基础数据结构的理解,是至关重要的。...
操作系统实验中的多级反馈队列调度算法是一种优化进程调度的重要策略,旨在提高系统...在心得体会部分,学生可以分享自己在实现过程中遇到的问题、解决方法以及对调度算法的新认识,以此深化理论学习与实践操作的结合。
操作系统是计算机科学中的核心课程,而多级反馈队列(Multi-Level Feedback Queue, MLFQ)是一种高效且灵活的进程调度...此外,比较不同调度算法的效率可以帮助学生认识到每种算法的优缺点,为未来的系统优化提供基础。
通过这次实验,不仅加深了对循环队列数据结构的理解,还强化了对线性表和链式存储结构的认识。特别是使用链式存储结构实现循环队列,通过头指针和尾指针管理单向链表,这种设计思路提高了代码的可读性和效率。此外,...
实验过程中,通过编程实践,掌握了构建顺序栈的算法思想,提升了编程技能,同时对顺序栈的工作机制有了更深入的认识。此外,实验还强调了堆栈和队列在实际问题解决中的应用,如括号匹配、回文检测、事务排队模拟等,...
此次实验使学生对课程有更深入的认识,同时也意识到自己在栈和队列关联理解上的不足,计划在未来的学习中加强这方面的研究,提升编程能力。 总结来说,本实验是学习栈和队列数据结构的重要实践环节,它不仅巩固了...
在队列操练中,有时会遇到一些看似与数学无关但实际上蕴含着数学原理的问题。这里提出的一个有趣的数学趣题就是关于学生向后转的问题。题目描述了一次45名学生的团体操排练活动,教师每次可以命令任意6名学生向后转...