数据结构:链表

719 阅读1分钟

链表是一种数据结构,其数据呈线性排列。

01.概念

例图是单向链表,一个节点有数据域和指针域,'val1'是数据域,'next'是指针域,它用于指向下一个数据内存地址。

02.存储方式

链表中的数据是分散存储在内存中,也就是说它是非顺序、非连续的存储于内存。

03.查询

由于链表中的数据是分散存储,所以访问数据时,只能从第一个数据开始,顺着指针的指向往下访问。(如:访问'val3'数据,需要从'val1'开始访问,经过'val2'后才能访问到'val3')

04.插入数据

在'val10'和'val20'之间插入'val15',先将'val15'的指针指向'val20',接着'val10'断开指向'val20'的指针,最后'val10'指针指向位置变成'val15',这样插入了数据。

05.删除数据

删除'val20',将'val10'的指针指向位置从'val20'变成'val30',完成了删除。(需注意,此时'val20'其实还存储在内存中,但是无法访问它,后续想要使用'val20'的存储空间时,用新数据覆盖掉就好啦。)

06.小补充

链表的分类:单链表、双向链表、循环链表

07.总结

  • 链表数据在内存中存储是非顺序、非连续的。
  • 链表查询数据的时间复杂度为O(n),而插入或删除数据的时间复杂度为O(1);