20172333 2018-2019-1 《程序设计与数据结构》第三周学习总结

时间:2022-09-21 10:26:28

20172333 2018-2019-1 《程序设计与数据结构》第三周学习总结

教材学习内容总结

5.1 概述

  • 队列是一个先入先出的数据结构。
  • 队列只能在表的头部进行删除,尾部进行插入。

5.2 Java API 的队列

  • Java中的队列是实现queue接口,内部定义了一个element方法,与peek方法类似,但是只检索队列首元素不删除。
  • queue接口还有两个方法,add用于检测队列中是否含有制定元素用抛出异常的方法来决定是否有该元素,offer用于添加元素并根据结果返回添加成功true失败false。
  • queue接口在删除也有两个方法,poll与remove与添加时的add,offer是类似的返回。poll返回null,remove则是异常。

5.6 用链表实现队列

  • 实现用链表实现队列,实现enqueueu/dequeue的操作。

    5.7 用数组实现队列

  • 由于数组的特殊性,想要在数组中实现队列一定要用环形数组,这就导致了数组的容量是固定的

教材学习中的问题和解决过程

  • 问题1:队列与栈之间的差距是什么
  • 问题1解决方案:队列是先进先出,栈是先进后出。队列只能在一段加入另一端删除,而栈是只能在同一段进行删除与加入。栈的插入和删除都在线性表的同一个端点,该点通称栈顶,相应地,不能插入删除的另一个端点通称栈底,其特性是后进先出。队列在线性表的队尾插入,队头删除,表头一般称队头,表尾一般称队尾,其特性是先进先出。用一个比较合适的例子来介绍队列就是这是一个无法掉头的火车,先进洞的车头先出洞。

代码调试中的问题和解决过程

  • 问题:在进行使用Linked表示queue的时候,在最后实现Tostring的时候,出现这样 错误图20172333 2018-2019-1 《程序设计与数据结构》第三周学习总结

  • 解决:错误原因是我使用的是原始object的tostring方法来实现的该方法
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

,该方法对于链表的使用无效,需要自己进行覆写或者进行循环。

代码托管

20172333 2018-2019-1 《程序设计与数据结构》第三周学习总结

上周考试错题总结

结对及互评

基于评分标准,我给李楠的博客打分:7分。得分情况如下:

正确使用Markdown语法(加1分)

模板中的要素齐全(加1分)

教材学习中的问题和解决过程, (加3分)

代码调试中的问题和解决过程, 无问题

感想,体会真切的(加1分)

点评认真,能指出博客和代码中的问题的(加1分)

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172330李楠
    • 结对照片
    • 结对学习内容
      • 集合概述——栈
      • 链式结构——栈

其他(感悟、思考等,可选)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 10/10
第二周 0/0 2/2 10/20
第三周 1500/1500 3/3 10/30