劍指Offer 24 複雜鍊錶的複製

2021-10-03 05:37:32 字數 800 閱讀 6937

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)

使用此方法的原因是對隨機節點時很好判斷,指向正確的節點。

/*

public class randomlistnode }*/

public

class

solution

randomlistnode currentnode = phead;

//1、複製每個結點,如複製結點a得到a1,將結點a1插到結點a後面;

while

(currentnode != null)

currentnode = phead;

//2、重新遍歷鍊錶,複製老結點的隨機指標給新結點,如a1.random = a.random.next;

while

(currentnode != null)

//3、拆分鍊錶,將鍊錶拆分為原鍊錶和複製後的鍊錶

currentnode = phead;

randomlistnode pclonehead = phead.next;

while

(currentnode != null)

return pclonehead;

}}

劍指Offer 24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。例 輸入 1 2 3 4 5 none 輸出 5 4 3 2 1 none 雙指標遍歷鍊錶,將當前節點的next設為前乙個節點。注意儲存當前節點的next來遍歷。時間複雜度 o n 空間複雜度 o 1 def reverse l...

劍指offer24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。樣例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null思路 初始化乙個新的頭節點new head,然後用尾插法把原始鍊錶中的結點插入新的頭節點。最後return new head next.acwing 3...

劍指offer24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出轉換後的頭結點。首先,從題目中可得知為單鏈表結構,只有指向下乙個元素的指標。而要完成整個鍊錶的反轉則需要將所有next指標進行反轉。定義3個指標,分別指向當前遍歷的節點 它的前乙個節點以及後乙個節點。pnode ppre pre pnode phe...