队列:队列是一种线性集合,其元素从一端加入,从另外一端删除,队列中的元素是按先进先出的方式处理的(FIFO)。一个队列一端为前端(front,head),
一端为末端(rear,tail)。
html
队列ADT所定义的操做前端
Java API中的队列
1.Java集合API提供了java.util.Stack类,它实现了栈集合。但它并无提供队列类,而是提供了一个Queue接口,
由多个类(包括LikedList类)来实现的。(课本例题5.1,5.3的代码都使用了Queue接口)
2.java.util.Stack类提供了传统的push、pop和peek等操做。而Queue接口并无实现传统的enqueue、dequeue和first操做。
Queue接口定义了另外两种方法,往队列中添加元素或从队列中删除元素。这些方法在异常类处理上有很大的不一样。
一个是提供了一个布尔返回值,另外一个是抛出一个异常。java
队列的ADT
如同栈同样,可定义一个泛型的QueueADT接口,表示队列的操做,,是通常目标与各类实现方式分开。git
问题1:编程
在环形数组里进行添加或删除元素时,不须要移动哪一个元素
这个是怎么理解呢?数组
问题1解决方案:
数据结构
看这幅图是很好理解的,把元素添加进入数组,可是删除元素后,数组中的元素不进行移动,而是停留
在原来的位置,后续添加的元素,则跟在以前的元素后,让前面的位置为空,而后进行循环。学习
问题1:课本上的代码有不少的错误,例如例题Codes
测试
问题1解决方案:
这个例题的本意是想要对加密的内容进行解密,并且课本上encoded += (char)message.charAt(scan) - keyValue);
这行代码
不只写法上存在错误——多了一个右括号,并且逻辑是彻底不符合意思的,因而我进行了修改(我认为这是例题想要实现的功能)
编码
(statistics.sh脚本的运行结果截图)
上周没有习题测试
本周结对学习状况
原本很开心中秋佳节不用写博客了,如今看来是我太天真了(;´д`)ゞ,因而假期没有咋学习的我,节假日一结束
就陷入了疯狂看课本的模式。总结了一下,咱们这两周就是细化了对栈和队列的学习,以前我只会使用栈和队列,
而他们的一些方法是如何实现的却没有考虑过,通过学习才发现,咱们以前一直学习的数组和链表是这么的应用普遍
,每个均可以用来实现栈和队列的不少方法学习果真是由浅入深,当初的我是只知其然,不知其因此然,而如今,
Java的学习则要求我知道因此然,虽然国庆又快要到了,可是看样子博客仍是不会免的呀〒▽〒。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | ||
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 | |
第二周 | 326/326 | 1/2 | 18/28 | 学习在一点点的深刻 |
第三周 | 784/1110 | 1/3 | 25/53 |