返回顶部

『嗨威说』数据结构 - 第二章学习内容小结

 

 本文内容:

  1. 本章内容的小结
  2. 完成作业或实践时解决困难的经验分享
  3. 参考资料、说明推荐理由及列出相关链接(或书目名称,具体页码)
  4. 目前学习过程中存在的困难,待解决或待改进的问题
  5. 接下来的目标

 

一、本章内容小结:

  (1)顺序表

    顺序表一般表现为数组,使用一组地址连续的存储单元依次存储数据元素

    (1)长度固定,必须在分配内存之前确定数组的长度,当然你可以使用vector容器来实现动态存储。

    (2)存储空间连续,即允许元素的随机访问。

    (3)存储密度大,内存中存储的全部是数据元素。

    (4)要访问特定元素,可以使用索引访问,时间复杂度为O(1).

    (5)要想在顺序表中插入或删除一个元素,都涉及到之后所有元素的移动,因此时间复杂度为O(n).

    注解:每次扩容的时候,都需要将旧的数据全部复制一份,会影响效率。不过实际上使用顺序表比链表的效率高

  (2)链表

    表中的每个节点都保存有指向下一个节点的指针,所有节点串成一条链。根据指针的不同,还有单链表、双链表和循环链表的区分。

wKiom1bvqaegxZKAAAAY4Ot5Ges352.png

    单链表是只包含指向下一个节点的指针,只能单向遍历。

    双链表即包含指向下一个节点的指针,也包含指向前一个节点的指针,因此可以双向遍历。

    由于链表是使用指针将节点连起来,因此无需使用连续的空间,它具有以下特点:

    (1)长度不固定,可以任意增删。

    (2)存储空间不连续,数据元素之间使用指针相连,每个数据元素只能访问周围的一个元素(根据单链表还是双链表有所不同)。

    (3)存储密度小,因为每个数据元素,都需要额外存储一个指向下一元素的指针(双链表则需要两个指针)。

    (4)要访问特定元素,只能从链表头开始,遍历到该元素,时间复杂度为O(n) 。

    (5)在特定的数据元素之后插入或删除元素,不涉及到其他元素的移动,因此时间复杂度为O(1)。

    (6)双链表还允许在特定的数据元素之前插入或删除元素。

    注解:链表的耗时大约是顺序表的 4倍左右。因为数组只需要很少的几次大块内存分配,而链表则需要很多次小块内存分配,内存分配操作相对是比较慢的,因而大大拖慢了链表的速度。这也是为什么会出现内存池。

 

 

二、完成作业或实践时解决困难的经验分享

   推荐在博客园上关注一些技术大牛博主,游览他们的博文进行自学提升自我价值,多多百度或谷歌,可以在公众号上关注一些不错的技术分享者。

 

 

三、参考资料、说明推荐理由及列出相关链接(或书目名称,具体页码):

  推荐大佬博客:

    https://www.cnblogs.com/Roni-i/

    https://www.cnblogs.com/AlvinZH/category/993446.html

 

 

四、目前学习过程中存在的困难,待解决或待改进的问题

  担任多重职位、多个社团、多个兼职,在平衡自己的课外时间和学习时间上存在问题,需要不断调整自我发展情况,退出一些已对自己无提升价值的社团。

  关于课内的困难:这个学期的课本上的代码又很多都是伪代码,希望老师能够拿一种具体语言来操作加深我们对概念的理解。

 

五、接下来的目标:

  (1)准备三月底的程序设计天梯赛,学习各类算法

  (2)初步入门自然语言模型建立,帮助树蛙项目组完成数据流、模型的搭建。

  (3)深入学习后期特效技术

 

posted @ 2019-03-17 18:07  嗨威er  阅读(343)  评论(2编辑  收藏  举报