数据结构论坛

首页 » 分类 » 常识 » 数据结构单链表实现前插法创建单链表
TUhjnbcbe - 2024/10/9 8:45:00
北京中科医院忽悠 http://baidianfeng.39.net/a_bdfys/161223/5153159.html

创建链表可以采用前插法或后插法。

前插法是将新生成的结点依次插入头结点之后创建链表。参看如下图示

链表初始化时,先生成头结点,将头结点地址赋值给头指针L。

(1)生成数据域值为的结点,将此结点挂在头节点之后

(2)生成数据域值为的结点,此时采用前插法,将结点插入到头结点之后,结点之前。

(3)由此,之后生成的每个结点,都插入到头结点之后。

根据上述的方法,使用C语言实现

结构体变量表示结点。具体代码解释参考:数据结构-单链表实现-结点表示

创建链表的过程如下:

(1)链表初始化,生成头结点,将头结点的地址赋值给头指针。

L=(LinkList)malloc(sizeof(LNode));

使用malloc函数动态分配内存,malloc函数返回的是void空指针,使用强制类型转换,转换为LinkList类型,将地址赋值给L。

再将头结点的指针域赋值为空

L-next=NULL;

图示表示如下:

上述代码的操作后L获得的地址是头结点的地址,符号(^)表示NULL。

(1)链表生成结点时反复执行的操作,所以需要使用循环。在循环中反复生成新的结点。所以在循环中同样使用malloc()函数生成结点

p=(LinkList)malloc(sizeof(LNode));

声明一个新的变量p,类型时LinkList类型。变量p存储的是新生成结点的地址。

(2)新生成结点后,需要向数据域中添加值,此时可以使用scanf()函数

scanf("%d",p-data);

(4)最后的问题,如何将新生成的结点连接到头结点之后?先看如下面的图示

L是头指针,存储头结点的地址;p指向新结点,存储新生成结点的地址。

此时需要将新结点挂在头结点之后,那需要先将头结点的指针域的值赋给新结点的指针域,再将头结点的指针域指向新结点。

p-next=L-next;L-next=p;

以下是完整代码参考

1
查看完整版本: 数据结构单链表实现前插法创建单链表