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

本文详细总结了《程序设计与数据结构》教材中关于队列的数据结构概念,包括队列的基本操作如enqueue、dequeue,以及如何利用Java集合API中的Queue接口进行队列操作。探讨了队列在保持数据顺序方面的作用,并深入分析了队列的两种实现方式:链表和数组。特别关注了环形数组实现队列的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

教材学习内容总结

第五章 队列

概述


1.队列是一种线性集合,其元素从一端加入,从另一端删除,按先入先出的方式处理。

2.前端(队首):front、head,末端(队尾):rear、tail,

3.
| 操作 | 说明 |
| -------- | :------------------------------------------: |
| enqueue | 向队列末端添加一个元素 |
| dequeue | 从队列前端删除一个元素 |
| first | 考察队列前端的那一个元素 |
| isEmpty | 判定队列是否为空 |
| size | 判定队列中的元素数目 |
| toString | 返回队列的字符串表示 |

Java API 中的队列


1.Java集合API提供了Queue接口,由多个类来实现。

2.栈的首要作用是颠倒顺序,队列的首要作用是保持顺序。

用链表实现队列


1.指向首元素的引用head,指向链表末的引用tail,整型变量count来跟踪队列中的元素数目。

2.必须一直认真地,精准地维护特殊情况下地引用

3.对于一个空队列,head,tail引用都为null,count则为0.

4.enqueue:将当前末元素的next引用设置指向这个新元素,重新将tail设置为指向这个新添加的末元素。该操作的复杂度为O(1).

5.dequeue:先判断队列是否有元素,如果没有,抛出异常EmptyCollectionException,如果有元素,则正常删除第一个元素,如果只有唯一元素,则删除队列元素后,队列就为空,把tail引用设置为null。该操作复杂度为O(1).

6.enqueue和dequeue操作作用于队列的对立端。

用数组实现队列


1.由于队列操作会修改集合的两端,因此将一端固定于索引0处要求移动元素。

2.由于队列处理会影响到该集合的两端,因此从队列中删除元素的时候,该策略要求移动元素。

3.非环形数组实现的元素移位,将产生O(n)的复杂度。

4.把数组看作是环形的,可以除去在队列的数组实现中把元素移位的需要。

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

  • 问题1:无

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

  • 忘截图了

代码托管

1333119-20180927185437375-2101978864.png

结对及互评

正确使用Markdown语法(加1分)
模板中的要素齐全(加1分)
教材学习中的问题和解决过程, (加3分)
代码调试中的问题和解决过程, 无问题
感想,体会真切的(加1分)
点评认真,能指出博客和代码中的问题的(加1分)

  • 20172317
    基于评分标准,我给以上博客打分:4分。得分情况如下:
  • 20172320
    基于评分标准,我给以上博客打分:8分。得分情况如下:

    • 结对学习内容
      • 教材第5章
      • 完成课后练习题
      • 完成程序设计项目:至少完成PP5.1、PP5.2、PP5.9

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

时间有点紧,最近有点忙,还需努力,完成实验和该解决的问题

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周0/01/18/8
第二周1306/13061/220/28
第三周1291/25971/318/46

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:20小时

  • 实际学习时间:18小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

转载于:https://www.cnblogs.com/mrf1209/p/9708733.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值