版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zztingfeng/article/details/90342730
1、链表是动态分配存储空间的链式存储结构。
其包括一个“头指针”变量,其中第0个结点称为整个链表的头结点,头结点中存放一个地址,该地址指向一个元素,头结点一般不存放具体数据,只是存放第一个结点的地址。
链表中每一个元素称为“结点”,每个结点都由两部分组成:存放数据元素的数据域和存储直接后继存储位置的指针域。指针域中存储的即是链表的下一个结点存储位置,是一个指针。多个结点链接成一个链表。
最后一个结点的指针域设置为空(NULL),作为链表的结束标志,表示它没有后继结点。
使用结构体变量作为链表中的结点,因为结构体变量成员可以是数值类型,字符类型,数组类型,也可以是指针类型,这样就可以使用指针类型成员来存放下一个结点的地址,使其它类型成员存放数据信息。
当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表。
2、单链表的示意图
Head指针为单链表的头指针,单链表L:L既是单链表的名字,也是其头指针。链表中的最后一个结点的指针域定义为空指针(NULL)。
3、链表的分配函数
在创建列表时要动态为链表分配空间,C语言的库函数提供了几种函数实现动态开辟存储单元。
malloc()函数实现动态开辟存储单元:
malloc函数原型为:void *malloc(unsigned int size);
其作用是在内存的动态存储区中分配一个长度为size的连续空间,函数返回值是一个指向分配域起始地址的指针(类型为void)。如果分配空间失败(如,内存空间不足),则返回空间指针(NULL)。
单链表的初始化
//不带头结点的单链表的初始化 void LinkedListInit1(LinkedList L) { L=NULL; } //带头结点的单链表的初始化 void LinkedListInit2(LinkedList L) { L=(LNode *)malloc(sizeof(LNode)); if(L==NULL) { printf("申请空间失败!"); exit(0); } L->next=NULL; }
文章来源: https://blog.csdn.net/zztingfeng/article/details/90342730