【程序员必须掌握数据结构;
数据结构中必讲链表;
所以,程序员必须掌握链表】
链表是数据元素的线性集合(Linear Collection),物理存储不连续。那么,这种设计的优点是什么?缺点又是什么?
链表的基本结构:
链表是由一系列的“节点”组成在一起的集合,节点(Node)由数据域(data)和指针域(next)组成。
从功能上看,data负责存储数据,next负责存储下一个节点的位置。当然,用更加严格的语句来讲,next存储的是其直接后继的地址,关于直接后继的定义见:
机器学习入坑者:数组的基本概念和优缺点
链表的分类:
常见的链表种类有:单向链表、双向链表、单向循环链表、双向循环链表,将会在后面文章中单独介绍各种链表的结构和代码实现,以及对应的链表操作。
链表的基本操作:
链表的基础操作包含:插入、删除、查找、合并等,此外还有:反转、排序、深度复制等。
链表的优点:
插入和删除快;存储空间不受限制,可动态申请扩充,不需事先开辟内存;
链表的缺点[3]:
相比于数组,链表的需要更多的存储空间(需存储指针);存储不连续导致其访问时间长;从反向访问角度,单向链表难以反向访问,扩展为双向链表则需要额外存储反向指针;每次节点访问都需要从头部开始;
总结:
本文仅介绍了链表的基本概念,并没有对各种类型链表进行理论的深入或实现的介绍,也没有对比各种类型链表的优点和缺点。为避免内容过于冗长,这些任务都安排在后面的笔记中。
参考:
【1】/item/链表/9794473?fr=aladdin
【2】/Shuffle_Ts/article/details/95055467
【3】/wiki/Linked_list
【4】/Miss_Monster/article/details/83657467