链表是一种常见的数据结构,在之前经常使用数组存放元素,但数组是一种静态的数据结构,例如要存放一个班的学生成绩,每个班人数在30到50人之间,那么就要至少创建一个长度为50的数组,这种方式也会比较浪费空间。而链表能满足存储元素个数是不限定的,添加或删除元素时,存储的个数也会随之改变。
单链表是链表中结构最简单的链表就如同排队一样一个接着一个,接下来的文章就将对单链表进行介绍和了解
下面通过一幅图来理解单链表的结构
链表中有一个头指针,图中Head表示的就是头指针,这个指针变量保存了一个变量的地址,从图中可以看到,我们称这个变量为元素。在链表中,每一个元素包含数据部分和指针部分,数据部分用来存放所包含的数据,指针部分用来指向下一个元素。最后一个元素的指针指向NULL,表示指向的地址为空。
例如我们创建一个存储单个整型数据的链表
1.创建动态链表前,首先要创建一个结构体
//创建结构体
struct Node
{
int data;
struct Node* next;
};
此处我们便创建了一个结构体,也就是每个节点的组成,可以看到,每个节点有一个整型数据和一个结构体指针构成
2.创建表头
创建链表实际上就是创建一个表头,有了表头就可以完成后续的创建新节点和添加节点等操作
//创建表头
struct Node* createlist()
{
struct Node* head = (struct Node*)malloc(sizeof(struct Node));
head->next = NULL;//头节点指向空
return head;
}
使用malloc函数为头节点分配一个存储空间,同时将头节点指向空,此时链表已经创建好,但这是一个只有表头的链表,后续将会说到创建新的节点以及节点的插入,删除等操作