c语言动态链表排序问题

2025-01-04 13:53:44
推荐回答(3个)
回答1:

p2.next是否依然对应p3?还是p1.next对应p3?那么看来你的p1,p2是结构体变量,而不是结构体指针变量;
对于链表排序注意有2种;一种是改变节点的指向;还有一种就是改变结构体成员的内部保存的数据;通常用第一种;

回答2:

如果要交换p1与p2两个结点,要做三步工作:
第一步,head指向p2(如果只做这一步,p1就废了),即head=p2;
第二步,p2指向p1(如果只做前两步,就成了死循环),即p2.next=p1;
第三步,p1指向p3,即p1.next=p3。
只有完成这三步,才达到交换p1、p2的目的。你的问题可从三个步骤中得到答案。

回答3:

P1和P2交换,就是P2.next=P1,P1.next=P3,head=P2