`

队列的重新认识

 
阅读更多

今天又回顾了原来队列那节,自己重新把代码敲了一遍,但是还是犯了一些小小的错误,但是还是收获了,对队列有了近一步的认识。在此几下仅仅为了更好的理解。

错误分析:

       这个错误真的是犯得太幼稚了,而且还犯了两次。在需要用到循环语句的地方,我这样用:

 然后我打印了输出队列的长度:

 结果是:

 后来自己就把代码重新检验了一遍发现也没有什么问题,突然才想到原来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);
  }
 }

 

所以解决这个问题的话,队列的实现就像用数组去实现是一样的简单。虽然写的有点简单,有点幼稚,算是对这里的深入理解吧。

  • 大小: 18.2 KB
  • 大小: 13.4 KB
  • 大小: 5.6 KB
  • 大小: 5.6 KB
分享到:
评论

相关推荐

    Redis 用于消息队列的存储

    博文c 中老师详细介绍了几种消息队列的 业务场景,是我所看的所有业务场景描述中最为详细,清晰的,结合博文a 老师的整体思路,对消息队列的实现上有了较为清晰的认识。 整体思路在博文a 中老师已经介绍,及依靠 ...

    简单的消息队列,基于socket实现

    简单实现消息队列,能够做到创建消息队列,获取消息队列,对于像我一样的萌新,可以快速的学习Socket,并对他的应用有一定的认识,方便快速上手消息队列,本人技术有限,可能不够完善,欢迎留言补充,欢迎大佬指教。

    数据结构 栈和队列

    数据结构 栈和队列 教你重新认识栈和队列

    操作系统多级反馈队列模拟

    实验目的 通过模拟多级反馈队列算法的调度过程,加深对处理机调度算法的理解。 实验内容 编写一个C语言程序,模拟多级反馈队列调度算法。 ... 经过实验,加深了我对多级反馈队列调度算法的认识。

    DS03_栈和队列 01_栈

    讲述栈和队列的区别,认识其存储和读取方式的不同

    透彻的重新认识一下 Kafka.docx

    我们现在经常提到 Kafka 的时候就已经默认它是一个非常优秀的消息队列了,我们也会经常拿它给 RocketMQ、RabbitMQ 对比。我觉得 Kafka 相比其他消息队列主要的优势如下: 极致的性能 :基于 Scala 和 Java 语言...

    jqueue:Javascript localStorage队列,一个通用的浏览器内队列,供以后处理

    认识您的匿名用户[2k]。 更多细节 为了改善用户体验,您可能需要保留有关活动的数据,并在后台稍后进行处理。 流程功能可以反复尝试,直到满足要求为止,因此需要使用延迟的Promise对象与队列进行通信。 一些示例...

    leetcode伪代码-Queue-Stack:队列&栈的经典题目

    本部分记录了leetcode队列和栈的一些经典题目,说到队列和栈我们就少不了说深度搜索(DFS)和广度搜索(BFS)当你完成这些题目之后,我相信你一定会对队列和栈以及DFS和BFS有重新的认识,我觉得这些题目才是正真的...

    消息队列kafka源码详细讲解分析

    关于kakfa消息对象源码分析最详解的讲解,更深刻的认识

    针对高并发,可扩展的互联网架构,搭建消息队列

    本文来自于网络,文章详细介绍了目前主流的消息队列ZeroMQ及环境搭建的详细步骤,希望文章的介绍可以让大家有个新的认识。想开发高并发可扩展的互联网架构,消息队列是不可缺少的,目前主流的消息队列,有windows...

    入门篇!大白话带你认识 Kafka

    今天我们来聊聊 Kafka ,主要是带你重新认识一下 Kafka,聊一下 Kafka 中比较重要的概念和问题。在后面的文章中我会介绍: Kafka 的一些高级特性比如工作流程。 使用 Docker 安装 Kafka 并简单使用其发送和消费消息...

    C语言模拟多级反馈

    所有数据长成这样,神TM能够认识对吧,但是要注意,这可是CTF的比赛!所以得分模式很套路: 最后的答案一般都是flag{}或者FLAG{}什么的对吧 那么,计算一下: ord(‘Y’)-ord(‘}’)= - 36 那么,再试试:...

    两两认识leetcode-LeetCode-Challenge:LeetCode-挑战

    两两认识leetcode LeetCode-Challenge 2020 年 6 月 7 日 问题陈述:按高度重建队列 假设您有一个随机的人站在队列中的列表。 每个人由一对整数 (h, k) 描述,其中 h 是此人的身高,k 是此人前面身高大于或等于 h 的...

    Disruptor 极速体验.docx

    可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是什么。 我们知道 BlockingQueue 是一个 FIFO 队列,生产者(Producer)往队列里发布(publish)一项事件(或称之为“消息”也可以)时,消费者...

    关于数据结构中数组、链表、队列、散列表、集合的理解

    经过一上午的学习,对数据结构有了新的认识和理解 数组 数组是由有限个相同类型的变量所组成的有序集合,它可以进行元素的插入、删除、查找等操作,它的物理存储方式是顺序存储,访问方式是随机访问,利用下标查找...

    Disruptor 入门 - v1.0

    可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是什么。 我们知道 BlockingQueue 是一个 FIFO 队列,生产者(Producer)往队列里发布(publish)一项事件(或称之为“消息”也可以)时,消费者...

    1 入门篇!大白话带你认识 Kafka

    今天我们来聊聊 Kafka ,主要是带你重新认识一下 Kafka,聊一下 Kafka 中比较重要的概念和问题。在后面的文章中我会介绍: Kafka 的一些高级特性比如工作流程。 使用 Docker 安装 Kafka 并简单使用其发送和消费消息...

    停车场管理的课设 数据结构

    这是做的涉及用到栈和队列的数据结构课设,让你对栈和队列有个更深的认识

    两两认识leetcode-LeetCodeCSharp:LeetCodeCSharp

    两两认识leetcode C# 中的 LeetCode 解决方案 第 1 部分已解决的问题列表 ID 标签 困难 解决方案 26 数组,两个指针 简单的 167 数组、两个指针、二分查找 简单的 242 字符串、哈希表 简单的 3 字符串、哈希表、两个...

Global site tag (gtag.js) - Google Analytics