最近公司太忙了,已经连续工作两周了。不知道你们赶项目的时候加班严重吗?
虽然最近白天工作加班,晚上还要熬夜写文章,感觉很累,但是每次写完发布之后看着阅读量一点点的增加,偶尔还有人给我点赞,就会感觉很开心,很有成就感。在此谢谢大家阅读我的文章并给我点赞,我一定会努力写好每一篇的文章的。
开始正文前请接受我的夺命三连问:什么是链表?链表有什么优点?链表有什么缺点?有人能回答出来吗?不知道也没关系,让我们带上这三个问题开始今天的文章,一起了解一下“链表数据结构”。(注:如果有不太清楚什么是“数据结构”的可以看这里=》java数据结构系列——什么是数据结构。)
基本概念
简介:
链表的数据元素是一个一个串联在一起的,这一串数据形成的结构就是“链表”。它就像一条自行车“链条”一样。每一个数据元素可以称之为一个节点。
特点:
链表在内存中的物理存储空间是非连续、非顺序的。其中每个节点包含两部分,一个是存储数据元素的“数据域”,另一个是存储下一个节点地址的“指针域”。
优点:
1、因为链表对内存空间的连续性和顺序性没有要求,所以它可以充分利用内存空间,并且这一特点还造就了链表可以不必预先知道数据的大小,更加灵活。
2、链表插入和删除数据速度快,只需要修改相邻节点的指针域就行。
缺点:
1、每个节点除了存储数据外还需要额外的存储下一个节点的地址,因此占用内存空间大。
2、链表没办法像有索引的数据结构那样随机访问某一个元素,只能每次查找元素时从链表的头节点或尾节点开始遍历,增加了查询数据的消耗。
分类:
单向链表:只保存了下一个节点地址值的链表。
双向链表:不光保存了下一个节点的地址值,还保存了上一个节点的。
环形链表:首尾相连的链表。
总结:
当数据数量不确定,并且删除和修改元素的操作过多时可以考虑使用链表。如果对数据的操作多数为查询时应避免使用链表。合理的使用链表结构可以大大提升程序的效率。
今天的文章只介绍了链表数据结构相关的理论知识,后面我会专门写几篇通过代码实现链表的文章。
看都看完了,点个赞再走呗!最近更新不稳定,希望大家多多谅解!如果文章哪里写的有问题的希望大家可以指出来,我会及时更正!
程序员必会算法系列之——“递归算法”