学号 20172326 《程序设计与数据结构》第三周学习总结
学号 20172326 《程序设计与数据结构》第三周学习总结
教材学习内容总结
- 队列是先进先出的数据结构(FIFO)与栈不同,队列的两端可分别进行操作
- first与front相同,返回首段的值
- API中的队列方法,有add,element,offer,peek,poll,remove
- 用链表实现队列时,enqueue和dequeue的算法复杂度均为O(1)
- 用数组实现队列时,enqueue和dequeue的算法复杂度均为O(n),因为无论将索引值定为头或者尾,插入或删除时,总会使得所有元素位置发生改变。
- 非环形数组实现的元素位移,将产生O(n)的复杂度。
- 由数组实现的队列中,rear和栈中的top类似,表示队列中的元素个数,以及数组中下一个空闲单元。
- 为了提高算法的效率, 我们使用环形数组实现队列,同时,为了使rear在循环时始终拥有正确的值,使用
rear = (rear + 1) % queue.length;
来确保。
教材学习中的问题和解决过程
- 问题1:
(图)add方法与offer方法的区别,以及优先级的体现在哪里?
- 问题1理解:
(图)可以看出,在api中,offer方法更为全面,对限制大小的队列进行了考虑,使得其不抛出异常,而是抛出false。
问题2:数组队列与链表队列中谁的空间复杂度更差的问题
问题2理解:对于一个数组队列,其空间总是预先分配好的,因此,如果元素个数小于分配的空间,那么势必造成空间的浪费。但同时,链表中没一个节点都存储着对下一个节点的引用,因此,随着存储的元素逐渐增多,占用的空间也将更多,所以,链表队列也存在着空间的浪费问题
问题3:对于deque(双向队列)的理解
理解:对于这个问题,我本来认为,在两端的删除,插入方法,将破坏队列所具有的顺序性。但是我们不妨仔细看一下他们的方法,
(图)可以看到,拥有这些方法后,deque便不再是一个简单的队列,简单的具有FIFO的数据结构。它也可以被当做栈使用,当然,效率会减低。除此之外,还有多线程的部分情况也可以用到deque。
代码调试中的问题和解决过程
- 问题:
(图)
编写课后习题时,出现了空指针的异常
- 问题解决方案:问题在于我没有将参数的含义搞清,count表示当前个数,而对于scan这个索引值来说,自然需要减一,否则,出现了指针实际已经遍历,但由于比count少一仍要继续向下,但笑一个为空的情况
代码托管
点评过的同学博客和代码
- 本周结对学习情况
- 20172313
20172332
结对学习内容
第5章 队列
结对及互评
- 博客中值得学习的或问题:
排版精美,对于问题研究得很细致,解答也很周全。 代码中值得学习的或问题:
代码写的很规范,思路很清晰,继续加油!上周考试错题总结
无
其他(感悟、思考等,可选)
- 本周依旧在数组与链表的基础上进行队列的学习,对链表的理解有了进一步的认识,同时,将栈与队列的不同也有了了解。但是,关于链表,我依旧存在一定不足,需要继续练习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 3/3 | |
第二周 | 409/409 | 1/2 | 5/8 | |
第三周 | 1174/1583 | 1/3 | 10/18 |
附加作业
参考资料
- java Queue中 remove/poll, add/offer, element/peek区别
- 关于双向队列的用法
- BlockingQueue(阻塞队列)详解
转载于:https://www.cnblogs.com/326477465-a/p/9704429.html
学号 20172326 《程序设计与数据结构》第三周学习总结相关推荐
- 20172315 2017-2018-2 《程序设计与数据结构》第九周学习总结
学号 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常是定义一个非正常情况或错误的对象,由程序或运行时环境抛出. 异常与错误不同,错误代表不可恢复的问题 ...
- 20172304 《程序设计与数据结构》第九周学习总结
20172304 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本章是第十五章,主要介绍了图的概念. 首先我来介绍一下图的基本结构. 从逻辑上讲,图是由边和结点组成的,在我的理解 ...
- 20172304 《程序设计与数据结构》 第二周学习总结
20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合 ...
- 20162329张旭升 2016-2017-2 《程序设计与数据结构》第九周学习总结
20162329张旭升 2016-2017-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 1.建立数据库连接:我们是通过老师给的XAMPP程序来配置自己的数据库,然后根据教程 ...
- 20162302 《程序设计与数据结构》第一周学习总结
20162302 2017-2018-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 很多情况下时间和空间不可兼得.在不同的情况下,要么用时间换空间,要么用空间换时间. 引出算 ...
- 20162303《程序设计与数据结构》第一周学习总结
学号 2016-2017-2 <程序设计与数据结构>第1周学习总结 教材学习内容总结 本周学习了基本的JAVA知识,虽然比较基础,但是在实际过程中还是出现了许许多多的问题,代码一遍遍的敲错 ...
- 20162329 2017-2018-1 《程序设计与数据结构》第九周学习总结
第九周学习总结 一.学习目标 二叉查找树的理解 二叉查找树的实现 平衡二叉查找树 哈夫曼树的实现 堆的理解 堆的实现 二.学习内容 1.二叉查找树 思路: 二叉查找树与一般二叉树的区别在于,二叉查找树 ...
- 20162330 2017-2018-1《程序设计与数据结构》第二周学习总结
2017-2018-1 学习总结目录: 1 2 3 5 6 7 9 10 11 12 目录 0. 本周学习内容总结 0.1 Comparable接口与Comparator接口的使用 0.2 泛型方法设 ...
- 20172323 2017-2018-2 《程序设计与数据结构》第九周学习总结
教材学习内容总结 本周学习第十一章异常和第十二章 第十一章-异常 异常是一个定义非正常情况或错误的对象,由程序或运行时环境抛出,可以根据需要进行相应的捕获和处理. 错误和异常都是对象,代表非正常情况或 ...
- 20172314 2018-2019-1《程序设计与数据结构》第一周学习总结
教材学习内容总结 概述 软件工程:是一门关于高质量软件开发的技术和理论的学科,用来控制开发过程,实现高质量的软件. 软件工程的目标:正确性.可靠性.健壮性.可用性.可维护性.可重用性.可移植性.运行效 ...
最新文章
- vc6.0绿色完整版 适用于xp win7 win8 win10
- IOS开发CALayer隐式动画
- 防止接口数据出问题,前端假数据调试
- CentOS系统代理配置
- maven私服-详细部署搭建笔记
- DotNet SSL TLS证书问题分析排障
- mysql 存储过程求和_MySQL - 存储过程和函数
- 简单版:带干扰线的图形验证码生成
- LeetCode 380. 常数时间插入、删除和获取随机元素(哈希+vector)
- 机器人踩滑板_不死神草、飞行滑板…超2000种创新发明在这里展出
- Qt奇淫技巧-使用QSharedMemory方式实现数据跨界面传输
- K8S+KubeSphere之Helm安装
- 华为发布The New P30 Pro新机:全新配色+EMUI10系统
- python 变量赋值变成元组
- postsql获取表字段信息SQL
- 流式传输的两大主流种类及流式传输特点
- EBS 个性化:个性化简介
- 西门子smart200模拟量与左移右移指令
- 【论文翻译和解释(2)】LOF:Identifying Density-Based Local Outliers论文精读
- Flutter图片加载数据