2016 - 2024

感恩一路有你

链表交换相邻元素 C语言问题:怎样实现对链表中两个结点的交换?

浏览量:1895 时间:2021-03-12 21:35:36 作者:admin

C语言问题:怎样实现对链表中两个结点的交换?

链表交换节点有两种方式:交换节点内容交换节点位置,如定义如下结构,分为数据部分和链表指针部分structdata{int num float score}struct stu{structdata struct stu*next}*head,*P1,*P2,*P3,*p4head->p1->p2->p3->p4交换节点的内容。节点的顺序保持不变。交换两个节点时,只交换数据部分,下一个指针不移动。例如,交换P1和P3(data)的内容:structudata t=P1->datap1->data=P3->datap3->data=t//这是可以的。为了保持链表的正常连接,需要重置next的值。这个过程有点复杂,例如:交换P1和P3的位置:最后更改为:head->p3->p2->p1->p4。首先,找到P1的头和P3的P2,然后开始重新分配链表的排列:1。(head)的新继承节点P1的头应成为P3(P4)3的原继承节点,P3(P2)的新继承节点应成为p14、P3的新继承节点,P1(P2)结构的原继承节点stu*p1p,*P3P,*pfor(P=headp!=nullp=P->next){如果(P->next==P1)p1p=P//找到P1的前向头如果(P->next==P3)P3P=P//找到P3的前体}p1p->next=P3//P3的前体节点的新后继节点成为P3的前体节点head->p3 struct stu*tnext=P1->next//保存P1(P2)的前体节点p1->next=P3->next//p1的新后继节点成为P3(P4)p1->p4p3p->next=p1//P3的前导节点新后继节点成为p1p2->p1p3->next=tnext//P3,新后继节点成为p1的原始后继节点P3->p2

链表交换相邻元素 两个链表节点如何交换位置 线性表交换两个元素位置

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。