当前位置:首页 > 经验 >

单链表各个节点的关系(单链表的中间节点)

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


那这个问题就是我前面说过的不带头结点链表和带头结点链表的问题。这里我们申请的是不带头结点的链表,head指针开始时NULL,因为链表为空,它没有结点可以指向。所以在进入尾插函数,用把head赋值给了tail,tail也为空,也就不能进行“->”这样的操作。
那么你可能会想,那直接把newNode的值赋值给tail就可以了,但是需要明白,tail确实此时会指向newNode,但是head还处于游离状态,如果不能把head指向第一个结点,那么这个链表等于没有构造,因为“火车头”都按不上,还能叫火车吗?
所以这里就必须分为两种情况,这就是不带头结点的链表的一个小弊端,也就体现在插入第一个结点时的这种尴尬情况。所以改写如下

单链表各个节点的关系,单链表的中间节点(9)


但是运行之后,依旧没有东西

单链表各个节点的关系,单链表的中间节点(10)


仍然通过调试,一探究竟

单链表各个节点的关系,单链表的中间节点(11)


可以发现,进入尾插函数后,把NeNode值赋值给了Phead,但是head依旧没变,所以就不可能打印。
所以这也是大多数人最容易犯错的地方,因为我们对于指针的第一印象,总感觉它是万能的,但是我们没有意识到一点是,指针为什么能发挥作用?这是因为指针的解引用操作。
但凡是学过C语言的人,在接触指针这一节时,绝对会知道一个关于指针交换变量的值的例子。如果传值就不能交换,而为什么传值,或者是什么情况下叫做传值,这个问题是很多人没有想过的。这里我的体会是,调用函数时传入的变量的类型和形参接受的变量的类型一致时这就是传值,所以我们上述尾插时,传入尾插函数的是一级指针变量,被调函数形参也用一级指针接受,所以一旦涉及到赋值操作,也就是上面的phead=NewNode,就不可能成功,相反咱们在else语句中写的那个却是正确的,因为此时我们拿到一级指针没有用它来赋值,而是进行解引用,也就是指针的本职工作。但是为什么最后依旧没有输出呢,就是因为第一次这个特殊情况,head没有被修改,自然而然整个队列都找不见。
经过以上分析,改写如下

单链表各个节点的关系,单链表的中间节点(12)

栏目热文

单链表找中间的节点(在链表中查找节点)

单链表找中间的节点(在链表中查找节点)

想法:返回单链表的中间节点:采用双指针方法,慢指针走一步,快指针走2步,当快指针走到头,那么慢指针所在的位置就是链表的中...

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

单链表查找结点流程图(在单链表中查找一个节点如何操作)

单链表查找结点流程图(在单链表中查找一个节点如何操作)

单链表单链表的创建分为头插入法和尾插入法两种,两者并无本质上的不同,都是利用指针指向下一个结点元素的方式进行逐个创建,只...

2022-11-04 00:31:59查看全文 >>

在单链表中查找一个节点如何操作(查找链表是否存在一个节点)

在单链表中查找一个节点如何操作(查找链表是否存在一个节点)

单链表的定义链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。线性表...

2022-11-04 00:24:09查看全文 >>

查找单链表中最大节点(单链表寻找值最大的结点)

查找单链表中最大节点(单链表寻找值最大的结点)

说真的,任何说起嵌入式软件怎么入门啊?需要学些什么东西啊,我差不多一致的回答都是:软件方面C语言和数据结构加上一些简单常...

2022-11-04 00:12:13查看全文 >>

在单链表中查找值为x的节点(单链表指针怎么指向上一节点)

在单链表中查找值为x的节点(单链表指针怎么指向上一节点)

通过编码实现日常关于链表可能会遇到到编程题1 两个链表是各自自增的,要求合拼之后的链表满足单调不递减/** * 两个递...

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

怎么找单链表节点(如何确认链表节点)

怎么找单链表节点(如何确认链表节点)

福哥答案2020-11-03:1.输入链表头节点,奇数长度返回中点,偶数长度返回上中点 。1.1.快慢指针。1.2.单指...

2022-11-04 00:41:37查看全文 >>

单链表如何判断是不是尾节点(单链表最后一个节点判断条件)

单链表如何判断是不是尾节点(单链表最后一个节点判断条件)

数组与链表是数据结构最基础的两种,其他的诸如hash表、树、队列、栈等都是基于这两种数据结构实现,上面两篇文章介绍了数组...

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

如何确认链表节点(链表如何判断是否为尾节点)

如何确认链表节点(链表如何判断是否为尾节点)

数据结构有顺序存储和链式存储两种存储方式。顺序存储的数组可以使用下标随机访问,但插入操作比较麻烦,且需要整块的内存,另外...

2022-11-04 00:43:50查看全文 >>

单链表查找特定值(单链表的查找并计数)

单链表查找特定值(单链表的查找并计数)

数组中取值可以根据下标获取指定的值,但链表不行,链表中逻辑相邻的元素,在物理上不一定是相邻的。链表中取值只能从首元结点开...

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

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

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

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

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

文档排行