20172327 2018-2019-1 《程序设计与数据结构》第三周学习总结
Posted mrf1209
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20172327 2018-2019-1 《程序设计与数据结构》第三周学习总结相关的知识,希望对你有一定的参考价值。
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:无
代码调试中的问题和解决过程
- 忘截图了
代码托管
结对及互评
基于评分标准,我给李楠的博客打分:7分。得分情况如下:
正确使用Markdown语法(加1分)
模板中的要素齐全(加1分)
教材学习中的问题和解决过程, (加3分)
代码调试中的问题和解决过程, 无问题
感想,体会真切的(加1分)
点评认真,能指出博客和代码中的问题的(加1分)
其他(感悟、思考等,可选)
这周学的有点麻烦,栈还行,就是链表有点糊涂。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 8/8 | |
第二周 | 1306/1306 | 1/2 | 20/22 |
计划学习时间:10小时
实际学习时间:8小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
以上是关于20172327 2018-2019-1 《程序设计与数据结构》第三周学习总结的主要内容,如果未能解决你的问题,请参考以下文章
20172327 2018-2019-1 《程序设计与数据结构》第七周学习总结
20172327 2018-2019-1 《程序设计与数据结构》第四周学习总结
20172327 2018-2019-1 《程序设计与数据结构》第五周学习总结
20172327 2018-2019-1 《程序设计与数据结构》第八周学习总结