反轉鍊錶與分組反轉鍊錶

2021-10-07 04:48:24 字數 1219 閱讀 8302

經典的反轉鍊錶,先上**

public class listnode 

}

public class printlist 

system.out.println();

}}

public class reverse 

public listnode reverse(listnode root)

listnode pre = null, cur = root;

while (cur != null)

return pre;

}public static void main(string args)

}

主要步驟為:

1.將當前節點的next節點儲存為tmp節點。

2.將當前節點的next節點設定為pre節點(實現反轉)。

3.將pre節點設為當前節點。

4.將當前節點設為第一步儲存的tmp節點。

給定乙個鍊錶,每k個節點一組進行反轉,k是正整數,其值小於或等於鍊錶長。

如果節點的總數不為k的整數倍,那麼最後剩餘的節點將保持原有的順序。

例如鍊錶為:

1->2->3->4->5

k=2時,反轉後的結果為 2->1->4->3->5

k=3時,反轉後的結果為 3->2->1->4->5

解題思路可以抽象為:

1.先反轉以 root 開頭的 k 個元素。

2.將第 k + 1 個元素作為 head 遞迴呼叫 reversekgroup 函式(即反轉的函式)

3.將上面兩個過程的結果連線起來。

public class reverseks 

public listnode reverse(listnode a, listnode b)

return pre;

}public listnode reversekgroup(listnode root, int k)

listnode newhead = reverse(a, b);

// 遞迴反轉後續鍊錶,連線起來

a.next = reversekgroup(b, k);

return newhead;

}public static void main(string args)

}

鍊錶 反轉鍊錶

問題 兩兩交換鍊錶中的節點 問題 k 個一組翻轉鍊錶 問題鏈結 利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。definition for singly linked list.struct listnode class solution ...

鍊錶 鍊錶反轉I

package com.hnust.reversal public class listnode public listnode int value,listnode next override public string tostring 我們可以通過把鍊錶中鏈結節點的指標反轉過來,從而改變鍊錶的...

鍊錶 反轉單向鍊錶

思路 從第二個元素開始。1 刪除當前元素。2 把當前元素放到頭結點位置。其中需要宣告3個變數 headnode 頭結點 prenode 前乙個結點 currentnode 當前結點 具體步驟如圖所示 實現 反轉單鏈表方法實現類 created by liujinjin on 17 1 19.publ...