学号 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 《程序设计与数据结构》第三周学习总结相关推荐

  1. 20172315 2017-2018-2 《程序设计与数据结构》第九周学习总结

    学号 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常是定义一个非正常情况或错误的对象,由程序或运行时环境抛出. 异常与错误不同,错误代表不可恢复的问题 ...

  2. 20172304 《程序设计与数据结构》第九周学习总结

    20172304 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本章是第十五章,主要介绍了图的概念. 首先我来介绍一下图的基本结构. 从逻辑上讲,图是由边和结点组成的,在我的理解 ...

  3. 20172304 《程序设计与数据结构》 第二周学习总结

    20172304 <程序设计与数据结构>第二周学习总结 教材学习内容总结 本周主要学习了第三章和第四章的内容 第三章 集合概述--栈 3.1集合 集合是一种聚集组织了其他对象的对象. 集合 ...

  4. 20162329张旭升 2016-2017-2 《程序设计与数据结构》第九周学习总结

    20162329张旭升 2016-2017-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 1.建立数据库连接:我们是通过老师给的XAMPP程序来配置自己的数据库,然后根据教程 ...

  5. 20162302 《程序设计与数据结构》第一周学习总结

    20162302 2017-2018-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 很多情况下时间和空间不可兼得.在不同的情况下,要么用时间换空间,要么用空间换时间. 引出算 ...

  6. 20162303《程序设计与数据结构》第一周学习总结

    学号 2016-2017-2 <程序设计与数据结构>第1周学习总结 教材学习内容总结 本周学习了基本的JAVA知识,虽然比较基础,但是在实际过程中还是出现了许许多多的问题,代码一遍遍的敲错 ...

  7. 20162329 2017-2018-1 《程序设计与数据结构》第九周学习总结

    第九周学习总结 一.学习目标 二叉查找树的理解 二叉查找树的实现 平衡二叉查找树 哈夫曼树的实现 堆的理解 堆的实现 二.学习内容 1.二叉查找树 思路: 二叉查找树与一般二叉树的区别在于,二叉查找树 ...

  8. 20162330 2017-2018-1《程序设计与数据结构》第二周学习总结

    2017-2018-1 学习总结目录: 1 2 3 5 6 7 9 10 11 12 目录 0. 本周学习内容总结 0.1 Comparable接口与Comparator接口的使用 0.2 泛型方法设 ...

  9. 20172323 2017-2018-2 《程序设计与数据结构》第九周学习总结

    教材学习内容总结 本周学习第十一章异常和第十二章 第十一章-异常 异常是一个定义非正常情况或错误的对象,由程序或运行时环境抛出,可以根据需要进行相应的捕获和处理. 错误和异常都是对象,代表非正常情况或 ...

  10. 20172314 2018-2019-1《程序设计与数据结构》第一周学习总结

    教材学习内容总结 概述 软件工程:是一门关于高质量软件开发的技术和理论的学科,用来控制开发过程,实现高质量的软件. 软件工程的目标:正确性.可靠性.健壮性.可用性.可维护性.可重用性.可移植性.运行效 ...

最新文章

  1. vc6.0绿色完整版 适用于xp win7 win8 win10
  2. IOS开发CALayer隐式动画
  3. 防止接口数据出问题,前端假数据调试
  4. CentOS系统代理配置
  5. maven私服-详细部署搭建笔记
  6. DotNet SSL TLS证书问题分析排障
  7. mysql 存储过程求和_MySQL - 存储过程和函数
  8. 简单版:带干扰线的图形验证码生成
  9. LeetCode 380. 常数时间插入、删除和获取随机元素(哈希+vector)
  10. 机器人踩滑板_不死神草、飞行滑板…超2000种创新发明在这里展出
  11. Qt奇淫技巧-使用QSharedMemory方式实现数据跨界面传输
  12. K8S+KubeSphere之Helm安装
  13. 华为发布The New P30 Pro新机:全新配色+EMUI10系统
  14. python 变量赋值变成元组
  15. postsql获取表字段信息SQL
  16. 流式传输的两大主流种类及流式传输特点
  17. EBS 个性化:个性化简介
  18. 西门子smart200模拟量与左移右移指令
  19. 【论文翻译和解释(2)】LOF:Identifying Density-Based Local Outliers论文精读
  20. Flutter图片加载数据

热门文章

  1. javascript 红宝书笔记之函数、变量、参数、作用域
  2. andorid service 本地服务
  3. Java与JavaScript 完美实现字符串拆分(利用数组存储)与合并的互逆操作
  4. LeetCode: Flatten Binary Tree to Linked List
  5. 网络编程常见问题总结
  6. Linux内核学习笔记十一——I/O层和I/O调度机制
  7. ref和out的使用与区别
  8. 大家一起来《六顶思考帽》
  9. 502与504错误分析
  10. SQLyog普通版与SQLyog企业版对比分析