链表
链表是一种线性数据结构,但不会根据线性存储数据,而是在当前元素存储下个元素的指针。链表相对数组的优点是,可以不预先知道数据的大小,而且不像数组那样需要空间的连续性,因此链表可以充分的利用计算机的内存空间,但是它也失去了随机取出数据的灵活性和存储指针的额外内存开销。
链表的种类
单向链表
单向链表是最简单的一种,它每个节点分为两部分:数据域和指针域,数据域存储当前节点的数据信息,指针域存储下个节点的地址。单链表的遍历,只能从头节点遍历,依次往后查询,插入也只是将新节点置为头节点,将指针指向原头节点,删除某个节点,只需将该节点的上个节点的指针指向该节点的下个节点即可。数据模型图如下:
增加
删除
双向链表
理解了单向链表,就可以很快理解双向链表,双向链表只是在元素中加入了指向上个元素的指针,节点信息就包括三部分,前指针域、数据域、后指针域。数据模型图如下:
双端链表
双端链表只是在单向链表的基础上多了一个对尾节点的引用,解决了单向链表只能从头节点插入数据的缺点。