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

参考资料

补充作业

posted @ 2018-09-26 19:58  大雪将烬  阅读(212)  评论(2编辑  收藏  举报