鍊錶翻轉 逆置鍊錶的變形

2021-08-04 05:22:22 字數 796 閱讀 4958

具體題目詳解:

給出乙個鍊錶和乙個數k,比如鍊錶1→2→3→4→5→6,k=2,翻轉後2→1→4→3→6→5,若k=3,翻轉後3→2→1→6→5→4,若k=4,翻轉後4→3→2→1→5→6,

解決思路:

先分析題目,當節點數有k個時,逆置長度為k的鍊錶,當節點數不足k時,則不做任何處理。

總的思路為:將長度為k的子鍊錶從原煉表中拿出,然後逆置,最後將逆置後的子鍊錶再連線回原鍊錶中。

我的解決方法是:編寫輔助的兩個函式,乙個是鍊錶逆置的。另乙個是獲得鍊錶最後乙個的。

具體**如下:

//斷開k長的鍊錶,逆置後,再插回原煉表中

node* rotatelist(node* phead, size_t k)

//如果pcur為空退出迴圈,說明不夠k個節點,所以不用逆置

if(pcur)

else

break;

} return phead;

}//採用頭插法逆置鍊錶

node* reverse_list(node* phead)

pcur->next=pnewhead;

pnewhead=pcur;

return pnewhead;

}//獲得鍊錶中最後乙個節點

node* get_last_node(node* phead)

總結:鍊錶翻轉,思路簡單,但是編寫**過程中,細節較多,需要注意。比如說,取出鍊錶時,要儲存它的前乙個節點和後乙個節點,保證逆置後,可以放回到原煉表中。

資料結構69 鍊錶逆置,鍊錶反轉,鍊錶翻轉

鍊錶翻轉,簡單地理解,就是將鍊錶的頭部結點變為鍊錶的尾部結點,與此同時將原鍊錶的尾部結點變成頭部結點。如下圖所示 圖 1 鍊錶翻轉示意圖 將鍊錶進行翻轉的方法有多種,本節給大家介紹兩種實現方法。實現鍊錶翻轉最直接的方法就是 從鍊錶的頭部開始遍歷每個結點,改變每個結點的指向,即將原本指向下乙個結點的指...

鍊錶之鍊錶的逆置

題目 資料結構實驗之鍊表三 鍊錶的逆置 time limit 1000 ms memory limit 65536 kib submit statistic discuss problem description 輸入多個整數,以 1作為結束標誌,順序建立乙個帶頭結點的單鏈表,之後對該單鏈表的資料進...

鍊錶的逆置

5.鍊錶的逆置 已知head指向乙個帶頭節點的單向鍊錶,鍊錶中每個結點包含資料域和指標域。用鍊錶實現該鍊錶的逆置,並輸出。例如 輸入 5 整數表示要輸入的字元個數 abcde 輸出 edcba 注意 不允許通過改變每個節點的資料域來實現效果,必須改變鍊錶連線順序發生逆置。我寫的 如下 include...