c语言动态链表排序问题

c语言动态链表排序问题如图。将第一个第二个节点交换后,p2.next是否依然对应p3?还是p1.next对应p3?还是都不对应p3?... c语言动态链表排序问题如图。将第一个第二个节点交换后,p2.next是否依然对应p3?还是p1.next对应p3?还是都不对应p3? 展开
 我来答
百度网友711eabb
2017-05-04 · TA获得超过709个赞
知道小有建树答主
回答量:727
采纳率:83%
帮助的人:344万
展开全部
p2.next是否依然对应p3?还是p1.next对应p3?那么看来你的p1,p2是结构体变量,而不是结构体指针变量;
对于链表排序注意有2种;一种是改变节点的指向;还有一种就是改变结构体成员的内部保存的数据;通常用第一种;
Yuqi_Tan

2017-05-04 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3726万
展开全部
如果要交换p1与p2两个结点,要做三步工作:
第一步,head指向p2(如果只做这一步,p1就废了),即head=p2;
第二步,p2指向p1(如果只做前两步,就成了死循环),即p2.next=p1;
第三步,p1指向p3,即p1.next=p3。
只有完成这三步,才达到交换p1、p2的目的。你的问题可从三个步骤中得到答案。
追问
如果介入一个临时变量,将p1,p2进行交换呢?
追答
还有一办个笨法,类似一维数组的做法,相对来说只对一个结点只有一个数据的链表还算简单,是把p1结点与p2结点存放的数据进行交换,这个过程当然要借助于一个临时变量。但这个方法对一个结点上存放多于一个数据的链表来说太复杂了,我称之为太笨了,呵呵。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9f8ba65
2017-05-04 · TA获得超过1019个赞
知道小有建树答主
回答量:384
采纳率:86%
帮助的人:106万
展开全部
P1和P2交换,就是P2.next=P1,P1.next=P3,head=P2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式