当前位置:首页 > 经验 >

单链表的创建图解(单链表的创建步骤)

来源:原点资讯(www.yd166.com)时间:2022-11-04 00:18:55作者:YD166手机阅读>>

创建单链表除了使用前插法,还可以使用后插法。后插法通过将新结点逐个插入到链表的尾部来创建链表。如下图所示

单链表的创建图解,单链表的创建步骤(1)

根据上图所示,可以考虑尾插法实现:

(1) 生成新的结点

(2) 将新结点地址赋值给头结点的指针域,将新结点的指针域设为NULL。

(3) 继续生成新的结点,将新结点的地址赋值给前驱结点的指针域,将新结点的指针域设为NULL。

如果此时用代码实现

L->next = p; p->next = NULL;

但如果仅仅按此代码运行,p是新生成的结点,在循环中就会每次将新结点的地址赋值给头指针的指针域,并没有按逐一将结点链接,形成链表。

所以对于尾插法,需要引入一个尾指针,使尾指针指向链表的尾节点,保证新结点能够插入到表尾。

引入尾指针后,后插法的实现思路如下

(1) 链表初始化后,头指针和尾指针都指向头结点

(2) 生成一个新的结点,将新结点的地址赋值给头结点的指针域。

(3) 将尾节点指向新生成的结点

代码实现如下:

(1) 初始化变量r,p。变量r是尾指针,变量p是每次生成的新节点。二者都是结构体指针类型

LinkList p, r;

(2) 初始化链表,生成头结点,头指针

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

(3) 将头结点的指针域设为NULL,将尾指针r指向头结点

L->next = NULL; r = L;

(4) 循环执行,使用变量p存储新生成的结点

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

(5) 将循环中每次生成的结点挂在新结点之后

p->next = NULL;

p->next中p是新生成的结点,p->next是新节点的指针域,因为新生成的结点总是在最后,所以需要将新结点的指针域设为NULL。

r->next = p;

r是尾指针,r初始化时指向头结点,r->next是r所指向的结点的指针域,所以需要将r的指针域赋值为p。

r = p;

在循环中需要将尾指针指向尾节点,结点p为每次生成的新结点的地址,所以将p赋值给r。

完整代码如下:

void CreatList_R(LinkList &L, int n){ int i; LinkList p, r; L = (LinkList)malloc(sizeof(LNode)); L->next = NULL; r = L; printf("使用尾插法,请输入%d个数\n", n); for(i=0; i<n; i ){ p = (LinkList)malloc(sizeof(LNode)); scanf("%d", &p->data); p->next = NULL; r->next = p; r = p; } }

栏目热文

单链表增加节点(单链表删除节点)

单链表增加节点(单链表删除节点)

单链表中增加节点,除了增加结点本身的数据域和指针域,还需要更改前、后结点的指针域。一个简单的实例代码:#include ...

2022-11-04 00:20:14查看全文 >>

十字链表简单理解(十字链表的节点结构)

十字链表简单理解(十字链表的节点结构)

前面之前的数据结构知识,介绍了矩阵的三元组表示法,当然之前只介绍矩阵运算中的转置,至于乘法运算以及加减运算,之前没有介绍...

2022-11-04 00:17:04查看全文 >>

单链表怎么找到上一个节点(链表的节点图解)

单链表怎么找到上一个节点(链表的节点图解)

给定一个单链表,判断其中是否有环,在网上搜集了一些资料,然后总结一下大概可以涉及到的问题,以及相应的解法。首先,关于单链...

2022-11-04 00:32:16查看全文 >>

单链表如何查找中间结点(如何求链表中的中间节点)

单链表如何查找中间结点(如何求链表中的中间节点)

部分数据结构请看常见Java问题及笔试题(二十一),这里只列出主要方法与测试用例!!!寻找单链表的中间节点,最简单的思路...

2022-11-04 00:14:56查看全文 >>

单链表中间节点(单链表中各节点是否连续)

单链表中间节点(单链表中各节点是否连续)

单链表是一种线性数据结构,与顺序表占据一段连续的内存空间不同,链表是用一组地址任意的存储单元来存储数据,每个存储单元分散...

2022-11-04 00:25:29查看全文 >>

单链表按序号查找(单链表按值查找操作)

单链表按序号查找(单链表按值查找操作)

严蔚敏《数据结构》笔记(1-4章)由于上传限制只能分章节上传,并且图片和公式可能无法上传出现乱码影响阅读。需要完整资料的...

2022-11-04 00:44:17查看全文 >>

单链表查找图示(三链表结构图解)

单链表查找图示(三链表结构图解)

电子计算机的本质是对输入(input)的数据进行处理(processing),对处理的结果形成输出(output)。程序...

2022-11-04 00:06:55查看全文 >>

单链表尾指针示意图(链表的节点图解)

单链表尾指针示意图(链表的节点图解)

作者:少年吉来源:微信公众号: 数据科学CLUB出处:https://mp.weixin.qq.com/s?__biz=...

2022-11-04 00:10:17查看全文 >>

单链表的插入结点图解(链表结点交换图解)

单链表的插入结点图解(链表结点交换图解)

单链表的删除和插入操作是线性表中比较重要的一部分,而这些操作又是线性表中的难点,同时也是考试的重点。对于初学者来说,在看...

2022-11-03 23:58:47查看全文 >>

单链表查找最大值(单链表按序查找思路)

单链表查找最大值(单链表按序查找思路)

一、序本文继续給大家带来一道和单链表相关的算法题。之前聊到,如何对单链表是否存在环进行检测,今天再来聊聊这个问题的进阶的...

2022-11-03 23:58:26查看全文 >>

文档排行