队列的示意图
实现队列时,要注意的是假溢出现象。如上图的最后一幅图。如图所看到的的假溢出现象
解决的方法:使用链式存储,这显然可以。在顺序存储时。咱们常见的解决的方法是把它首尾相接,构成循环队列。这可以充分利用队列的存储空间。
循环队列示意图:
在上图中。front指向队列中第一个元素。rear指向队列队尾的下一个位置。
但依旧存在一个问题:当front和rear指向同一个位置时,这表明的是队空仍是队满呢?你们可以想象下这样的情景。
解决这种问题的常见作法是:
1.使用一标记,用以区分这样的易混淆的情形。
2.牺牲一个元素空间。当front和rear相等时,为空。当rear的下一个位置是front时。为满。
例如如下图:
html
问题1:在作习题pp5_1的时候,向队列中添加了两个不一样的int型数值,可是输出的时候两个都是第一次输入的数值。
前端
public void enqueue(T element) { LinearNode<T> node = new LinearNode<T>(element); if(isEmpty()) head = node; else tail.setNext(node); tail = node; count ++; }
转眼间,开学也已经快一个月了,又找到了上学期学习的感受,但因为中秋假期的影响,仍是感到本身这周的学习时间不太够,仅仅只完成了教材内容和代码练习而已,并无去进行更多的拓展学习。我能感到本身状态有所好转,可以静下心来认真看书,专心敲代码了,但仍是要付出更多的时间才行,继续加油!java
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
第一周 | 200/200 | 1/1 | 5/20 | |
第二周 | 981/1181 | 1/2 | 15/20 | |
第三周 | 1694/2875 | 1/3 | 15/35 |
计划学习时间:15小时node
实际学习时间:15小时git
目前水平 (0~9) | 课程结束后水平 (0~9) | |
---|---|---|
对编程整体理解 | 3 | 8 |
程序理解 | 5 | 8 |
模块实现,逐步细化 | 2 | 7 |
单元测试,代码覆盖率 | 4 | 8 |
代码质量 | 6 | 8 |