鏈表交換相鄰元素 C 鏈表如何實(shí)現(xiàn)節(jié)點(diǎn)交換?
C 鏈表如何實(shí)現(xiàn)節(jié)點(diǎn)交換?在鏈表中交換節(jié)點(diǎn)有兩種方法:交換節(jié)點(diǎn)的內(nèi)容、保持節(jié)點(diǎn)的順序不變和保持相同。交換兩個(gè)節(jié)點(diǎn)時(shí),只交換數(shù)據(jù)部分,下一個(gè)指針不移動(dòng)。例如,交換P1和P3(data)的內(nèi)容:stru
C 鏈表如何實(shí)現(xiàn)節(jié)點(diǎn)交換?
在鏈表中交換節(jié)點(diǎn)有兩種方法:交換節(jié)點(diǎn)的內(nèi)容、保持節(jié)點(diǎn)的順序不變和保持相同。交換兩個(gè)節(jié)點(diǎn)時(shí),只交換數(shù)據(jù)部分,下一個(gè)指針不移動(dòng)。例如,交換P1和P3(data)的內(nèi)容:structudata t=P1->datap1->data=P3->datap3->data=t//這是可以的。
c語(yǔ)言中鏈表如何交換節(jié)點(diǎn)?
交換列表節(jié)點(diǎn)的本質(zhì)通常是除下一個(gè)指針之外的交換節(jié)點(diǎn)結(jié)構(gòu)的內(nèi)容。傳統(tǒng)的、真實(shí)有效的方法是在不交換其他成員的情況下交換節(jié)點(diǎn)的關(guān)系指針。一個(gè)節(jié)點(diǎn)有自己的指針和指向下一個(gè)節(jié)點(diǎn)的指針。“它自己的指針”是上一個(gè)節(jié)點(diǎn)的下一個(gè)指針,所以我們需要交換上一個(gè)節(jié)點(diǎn)的下一個(gè)指針和當(dāng)前級(jí)別的下一個(gè)指針。而且,由于頭節(jié)點(diǎn)和尾節(jié)點(diǎn)的關(guān)系與中間節(jié)點(diǎn)的關(guān)系不同,在與頭節(jié)點(diǎn)和尾節(jié)點(diǎn)交換時(shí),需要處理的上、中間節(jié)點(diǎn)有細(xì)微的區(qū)別。所以操作起來(lái)比較麻煩,如果關(guān)系處理不好,就會(huì)出錯(cuò)。另一種方法是交換除下一個(gè)指針以外的所有成員。思路非常清晰,就是代碼比較長(zhǎng),節(jié)點(diǎn)成員多的時(shí)候比較明顯,編寫(xiě)比較麻煩。有一種確保思路清晰、書(shū)寫(xiě)方便的方法是“將需要交換的兩個(gè)節(jié)點(diǎn)作為一個(gè)整體交換,然后將下一個(gè)指針交換回來(lái)”。我工作時(shí)經(jīng)常用這種方法。然而,盡管代碼讀起來(lái)流暢、短視,但你不能指望它能提高效率——因?yàn)樵谇袚Q結(jié)構(gòu)變量時(shí),雖然寫(xiě)得很短,但實(shí)際上是一個(gè)成員一個(gè)成員地交換,更不用說(shuō)“將下一個(gè)指針交換回來(lái)”的操作了。個(gè)人經(jīng)驗(yàn),供參考。