今天又回顾了原来队列那节,自己重新把代码敲了一遍,但是还是犯了一些小小的错误,但是还是收获了,对队列有了近一步的认识。在此几下仅仅为了更好的理解。
错误分析:
这个错误真的是犯得太幼稚了,而且还犯了两次。在需要用到循环语句的地方,我这样用:
然后我打印了输出队列的长度:
结果是:
后来自己就把代码重新检验了一遍发现也没有什么问题,突然才想到原来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 中老师详细介绍了几种消息队列的 业务场景,是我所看的所有业务场景描述中最为详细,清晰的,结合博文a 老师的整体思路,对消息队列的实现上有了较为清晰的认识。 整体思路在博文a 中老师已经介绍,及依靠 ...
简单实现消息队列,能够做到创建消息队列,获取消息队列,对于像我一样的萌新,可以快速的学习Socket,并对他的应用有一定的认识,方便快速上手消息队列,本人技术有限,可能不够完善,欢迎留言补充,欢迎大佬指教。
数据结构 栈和队列 教你重新认识栈和队列
实验目的 通过模拟多级反馈队列算法的调度过程,加深对处理机调度算法的理解。 实验内容 编写一个C语言程序,模拟多级反馈队列调度算法。 ... 经过实验,加深了我对多级反馈队列调度算法的认识。
讲述栈和队列的区别,认识其存储和读取方式的不同
我们现在经常提到 Kafka 的时候就已经默认它是一个非常优秀的消息队列了,我们也会经常拿它给 RocketMQ、RabbitMQ 对比。我觉得 Kafka 相比其他消息队列主要的优势如下: 极致的性能 :基于 Scala 和 Java 语言...
认识您的匿名用户[2k]。 更多细节 为了改善用户体验,您可能需要保留有关活动的数据,并在后台稍后进行处理。 流程功能可以反复尝试,直到满足要求为止,因此需要使用延迟的Promise对象与队列进行通信。 一些示例...
本部分记录了leetcode队列和栈的一些经典题目,说到队列和栈我们就少不了说深度搜索(DFS)和广度搜索(BFS)当你完成这些题目之后,我相信你一定会对队列和栈以及DFS和BFS有重新的认识,我觉得这些题目才是正真的...
关于kakfa消息对象源码分析最详解的讲解,更深刻的认识
本文来自于网络,文章详细介绍了目前主流的消息队列ZeroMQ及环境搭建的详细步骤,希望文章的介绍可以让大家有个新的认识。想开发高并发可扩展的互联网架构,消息队列是不可缺少的,目前主流的消息队列,有windows...
今天我们来聊聊 Kafka ,主要是带你重新认识一下 Kafka,聊一下 Kafka 中比较重要的概念和问题。在后面的文章中我会介绍: Kafka 的一些高级特性比如工作流程。 使用 Docker 安装 Kafka 并简单使用其发送和消费消息...
所有数据长成这样,神TM能够认识对吧,但是要注意,这可是CTF的比赛!所以得分模式很套路: 最后的答案一般都是flag{}或者FLAG{}什么的对吧 那么,计算一下: ord(‘Y’)-ord(‘}’)= - 36 那么,再试试:...
两两认识leetcode LeetCode-Challenge 2020 年 6 月 7 日 问题陈述:按高度重建队列 假设您有一个随机的人站在队列中的列表。 每个人由一对整数 (h, k) 描述,其中 h 是此人的身高,k 是此人前面身高大于或等于 h 的...
可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是什么。 我们知道 BlockingQueue 是一个 FIFO 队列,生产者(Producer)往队列里发布(publish)一项事件(或称之为“消息”也可以)时,消费者...
经过一上午的学习,对数据结构有了新的认识和理解 数组 数组是由有限个相同类型的变量所组成的有序集合,它可以进行元素的插入、删除、查找等操作,它的物理存储方式是顺序存储,访问方式是随机访问,利用下标查找...
可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是什么。 我们知道 BlockingQueue 是一个 FIFO 队列,生产者(Producer)往队列里发布(publish)一项事件(或称之为“消息”也可以)时,消费者...
今天我们来聊聊 Kafka ,主要是带你重新认识一下 Kafka,聊一下 Kafka 中比较重要的概念和问题。在后面的文章中我会介绍: Kafka 的一些高级特性比如工作流程。 使用 Docker 安装 Kafka 并简单使用其发送和消费消息...
这是做的涉及用到栈和队列的数据结构课设,让你对栈和队列有个更深的认识
两两认识leetcode C# 中的 LeetCode 解决方案 第 1 部分已解决的问题列表 ID 标签 困难 解决方案 26 数组,两个指针 简单的 167 数组、两个指针、二分查找 简单的 242 字符串、哈希表 简单的 3 字符串、哈希表、两个...