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