複製乙個複雜鍊錶

2021-10-01 22:22:41 字數 666 閱讀 3666

節點結構:

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;

}}

複製乙個複雜鍊錶

在牛客網上刷題時,出現了如下的錯誤 您的 已儲存 段錯誤 您的程式發生段錯誤,可能是陣列越界,堆疊溢位 比如,遞迴呼叫層數太多 等情況引起 case通過率為0.00 試題題目為 複雜鍊錶的複製。class solution pnode phead pclonenode clonenode while...

劍指刷題 複製乙個複雜鍊錶

複雜鍊錶的資料元素 包括 資料域 next域 乙個隨機域,隨機也是指向這個鍊錶中的任乙個結點。解題思路是 從頭到尾 遍歷的同時 複製鍊錶結點,在複製鍊錶結點的時候 只能 暫時根據原鍊錶複製出 資料域 和next指標域,隨機指向的結點,不一定已經複製出新結點。所以在這個同時 將 原鍊錶每個結點的位址 ...

複雜鍊錶複製

複雜鍊錶複製的標頭檔案mlist.h ifndef mlist h define mlist h include include includetypedef int datatype typedef struct node node,pnode,plist pnode crealist datat...