20172315 2018-2019-1 《程序设计与数据结构》第三周学习总结
20172315 2018-2019-1 《程序设计与数据结构》第三周学习总结
教材学习内容总结
- 队列(queue)是一种线性集合,其元素从一端加入,从另一端删除;队列元素是按先进先出(First In First Out,FIFO)方式处理的。
- 从队列删除元素的次序,与往队列放置元素的次序是一样的。
- enqueue、dequeue和first等操作对应于栈的push、pop和peek等操作。
- Java集合API提供了java.util.Stack类,它实现了栈集合。但它并没有提供队列类,而是提供一个Queue接口,由多个类(包括LinkedList类)来实现的。
- java.util.Stack 类提供了传统的push、pop和peek等操作。而Queue接口并没有实现传统的enqueue、dequeue和first操作。Queue接口定义了另外两种方法,往队列中添加元素或从队列中删除元素。这些方法在异常类处理上有很大的不同。一个是提供了一个布尔返回值,另一个是抛出一个异常。
- 队列是一种可存储重复编码密钥的便利集合。
- 队列与栈的主要差别在于,我们必须要操作链表的两端。
- 那两个分别指向链表首元素、链表末元素的引用方便队列的链表实现。
- 由于队列操作会修改集合的两端,因此将一端固定于索引0处要求移动元素。
- 把数组看作是环形的,可以除去在队列的数组实现中把元素移位的需要。
- 双端队列(Deque)是队列的扩展,它允许从队列的两端添加、删除和查看元素。
教材学习中的问题和解决过程
- 问题1:对于书上所讲的双端队列产生好奇,想知道如何具体实现的
- 问题1解决方案:百度查询资料有了具体了解。双端队列
代码调试中的问题和解决过程
- 问题1:编写pp5.7时没有思路
- 问题1解决方案:查询资料:双向链表:
就是有双向指针 即 双向的链域
链结点的结构:
┌────┬────┬────────┐
│data│next│previous│
└────┴────┴────────┘
双向链表不必是双端链表(持有对最后一个链结点的引用),双端链表插入时是双向的
有两条链:一条从头到尾,一条从尾到头,删除遍历时也是双向的
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
上周无测试
结对及互评
点评模板:
- 博客中值得学习的或问题:
- 提出的问题较少
- 教材内容总结比较到位
- 代码中值得学习的或问题:
- 代码十分简洁,一目了然
- 代码量较少
点评过的同学博客和代码
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 0/0 | 0/0 | |
第二周 | 800/800 | 2/2 | 18/18 | |
第三周 | 600/1400 | 3/5 | 22/40 |