链式存储结构
上一篇 顺序存储结构 有缺点,最大的缺点就是插入和删除的时候需要移动大量的元素。非常耗费时间
而链式存储结构就解决了这个问题。我们让元素不按照连续的内存地址存储即可,逻辑上让当前元素知道下一个元素就好了呀!
链式存储结构定义
在顺序存储结构中只要保存元素即可,而在链式存储结构中不仅要保存元素数据,还要保存它后继元素的地址。通常我们把保存元素数据信息的域称为数据域
保存后继地址的域称为指针域。这两部分组成数据元素 称为结点(Node)。
对于线性表有限特点来说,链表存储结构也不例外,需有头有尾我们把链表的第一个结点的存储位置叫做头指针 而最后一个结点指向"空"(Null)
《大话数据结构》书中图:
有时为了方便,我们会在第一个结点前设置一个结点,叫做头结点。头结点的数据域可以存储其他相关数据(比如链表元素个数等等),头结点的指针域指向第一个结点的存储位置。
《大话数据结构》书中图:
头指针与头结点
- 头指针是指向第一个结点的指针,若链表有头结点则指向头结点的指针。不能为空。
- 头结点不一定是链表必要的,一般可保存链表元素外的数据。放在链表第一个结点前。