C语言手写链表犯错指南

本文记录了在学习C语言链表时遇到的两个典型错误:混淆`p->next = p`与`p = p->next`,以及不理解`pr`和`head`的区别。通过错误示例和解析,强调了正确操作链表的重要性,帮助读者避免类似陷阱。
摘要由CSDN通过智能技术生成

最近在学习链表,惊闻不能把链表手写出来就不能算是掌握了,我只好花功夫在理解+手写上。过程中犯了许多错误,简单记录一下,顺便加深一下印象,避免以后再犯同样的错误。

问题一:到底是p->next = p,还是p = p->next ?
对于我来说,这个问题极易搞混。我第一面默写时写成了前者,结果就翻车了——输出陷入了无限循环。
没办法,只好运用单步调试大法。找了好久才找到原因,也就是将题目中的两种描述搞混了。
在这里插入图片描述
这就是问题所在了。按上图的写法,相当于是将当前节点的指针域赋值为当前节点的地址,示意图如下:
在这里插入图片描述
查看节点地址,发现所有节点地址都和头节点一样,链表陷入了无穷循环。

在这里插入图片描述
将这个问题改正后,程序能正常运行。

问题二:pr和head的区别?
先看下面这段代码,这是错误情况:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值