1.研究的是带头结点的单链表

单链表是由表头唯一确定的,因此单链表可以用头指针的名字来命名,若头指针名是L,则把链表称为表L。

2.单链表的存储结构

typedef struct Lnode{   //声明结点的类型和指向结点的指针类型
   ElemType  data;      //结点的数据域
   struct Lnode *next;  //结点的指针域
}Lnode,*LinkList        //LinkList为指向结构体Lnode的指针类型
                        //加*表示这个类型是指针型

里面的struct Lnode *next是自己定义自己,称为嵌套定义

Lnode=LinkList node表示链表中的结点

*LinkList表示指向这个结点的指针,再定义就不需要加*了,直接LinkList L

例如定义一个Lnode a,定义了一个a结点

如果是个地址则定义Lnode *p

**链表是结点的集合,0个或多个结点组成一个链表。
节点的结构:数据域(记录数据),指针域(指向下一个结点)
链表的结构:类型1:若干结点依次相连;**

链表和结点的类型是一样的,链表是结点的集合,所以为了区分定义结点和定义列表,我们在定义的时候定义链表我们一般用LinkList L,定义结点的时候用Lnode a,其实本质上没有什么区别,但是为了更好的区分因此采用不同的定义方式,而且链表的名字存放的就是这个表的首地址,所以是指针类型,在定义结构体的时使用的是*LinkList,这里的*就表示指向这个结构体的指针类型。

<br/>

3.为了统一链表的操作,通常这样定义

4.初始化单链表

可以使头结点的指针域为NULL,则可以初始化单链表

L->head = NULL;

访问头结点的指针域head为使其为空

最后修改:2022 年 03 月 17 日
如果觉得我的文章对你有用,请随意赞赏