• 学号 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少一仍要继续向下,但笑一个为空的情况

    代码托管

    点评过的同学博客和代码

    结对学习内容

    • 第5章 队列

    结对及互评

    • 博客中值得学习的或问题:
      排版精美,对于问题研究得很细致,解答也很周全。
    • 代码中值得学习的或问题:
      代码写的很规范,思路很清晰,继续加油!

    上周考试错题总结

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

    • 本周依旧在数组与链表的基础上进行队列的学习,对链表的理解有了进一步的认识,同时,将栈与队列的不同也有了了解。但是,关于链表,我依旧存在一定不足,需要继续练习。

    学习进度条

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

    附加作业

    参考资料

  • 相关阅读:
    最小生成树(二)Prim算法
    红黑树
    最短路径:Dijstra(迪杰斯特拉)算法
    30岁的程序员,未来之路-写于疫情笼罩下的北京-中国-地球
    Spring Cloud 系列之Hystrix、Ribbon、Feign 源码剖析(一)引子
    A left join B B表有多条记录,max(create_time)取最新一条
    最新idea破解码,亲测可用
    Spring Cloud Gateway简单使用
    开源的C#实现WebSocket协议客户端和服务器websocket-sharp组件解析
    简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ解析
  • 原文地址:https://www.cnblogs.com/326477465-a/p/9704429.html
Copyright © 2020-2023  润新知