成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

鏈表交換相鄰元素 C語言問題:怎樣實現(xiàn)對鏈表中兩個結(jié)點的交換?

C語言問題:怎樣實現(xiàn)對鏈表中兩個結(jié)點的交換?鏈表交換節(jié)點有兩種方式:交換節(jié)點內(nèi)容交換節(jié)點位置,如定義如下結(jié)構(gòu),分為數(shù)據(jù)部分和鏈表指針部分structdata{int num float score}s

C語言問題:怎樣實現(xiàn)對鏈表中兩個結(jié)點的交換?

鏈表交換節(jié)點有兩種方式:交換節(jié)點內(nèi)容交換節(jié)點位置,如定義如下結(jié)構(gòu),分為數(shù)據(jù)部分和鏈表指針部分structdata{int num float score}struct stu{structdata struct stu*next}*head,*P1,*P2,*P3,*p4head->p1->p2->p3->p4交換節(jié)點的內(nèi)容。節(jié)點的順序保持不變。交換兩個節(jié)點時,只交換數(shù)據(jù)部分,下一個指針不移動。例如,交換P1和P3(data)的內(nèi)容:structudata t=P1->datap1->data=P3->datap3->data=t//這是可以的。為了保持鏈表的正常連接,需要重置next的值。這個過程有點復雜,例如:交換P1和P3的位置:最后更改為:head->p3->p2->p1->p4。首先,找到P1的頭和P3的P2,然后開始重新分配鏈表的排列:1。(head)的新繼承節(jié)點P1的頭應成為P3(P4)3的原繼承節(jié)點,P3(P2)的新繼承節(jié)點應成為p14、P3的新繼承節(jié)點,P1(P2)結(jié)構(gòu)的原繼承節(jié)點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的前體節(jié)點的新后繼節(jié)點成為P3的前體節(jié)點head->p3 struct stu*tnext=P1->next//保存P1(P2)的前體節(jié)點p1->next=P3->next//p1的新后繼節(jié)點成為P3(P4)p1->p4p3p->next=p1//P3的前導節(jié)點新后繼節(jié)點成為p1p2->p1p3->next=tnext//P3,新后繼節(jié)點成為p1的原始后繼節(jié)點P3->p2