顺序表的缺陷:
1)顺序表的长度固定,有时需要扩容
2)在中间或者头部插入删除数据的时候需要移动大量的数据,降低性能。
而为了弥补顺序表的缺陷研究出了链表。
1.链表的定义
链表是线性表的一种,它是一种逻辑上连续但是物理存储空间上不连续的一种数据结构。链表又分为单链表、双链表、循环链表以及静态链表。
1.1 单链表的定义
单链表是指通过一组任意的存储单元来存储线性表中的数据元素。即可以使用任意不连续的内存来存放同一组中的数据 。链表是由一个一个的结点组成的,没有结点分为数据域和指针域,数据域是用来存储该结点所保存的数据信息的,而指针域则是用来保存下一个结点的地址。
data | next |
1.1.1单链表的构建方式有头插和尾插两种方式
1.1.1.1头插法
头插法即是从链表的头部插入结点以此来构建链表
构建代码:
void SListPushFront(SListNode** pphead, SListDataType x) { SListNode* newNode = CreatSlistNode(x); newNode->next = *pphead; *pphead = newNode; }
代码中CreateSlistNode是构建一个新结点
SListNode*