C語言資料結構之複雜鍊錶的拷貝

2022-09-25 10:18:11 字數 978 閱讀 2311

題目:

給你乙個長度為 n 的鍊錶,每個節點包含乙個額外增加的隨機指標 random ,該指標可以指向鍊錶中的任何節點或空節點。

構造這個鍊錶的 深拷貝。 深拷貝www.cppcns.com應該正好由 n 個 全新 節點組成,其中每個新節點的值都設為其對應的原節點的值。新節點的 next 指標和 random 指標也都應指向複製鍊錶中的新節點,並使原鍊錶和複製鍊錶中的這些指標能夠表示相同的鍊錶狀態。複製鍊錶中的指標都不應指向原煉表中的節點 。

例如,如果原煉表中有 x 和 y 兩個節點,其中 x.random --> y 。那麼在複製鍊錶中對應的兩個節點 x 和 y ,同樣有 x.random --> y 。

返回複製鍊錶的頭節點。

struct node

第二步,處理隨機指標,因為拷貝的就在原節點後面,拷貝的隨機指標就指向原節點隨機指標的後乙個;

struct node* cur = head;

while (cur)

else

cur = c>next;

}第三步,將鍊錶分開,並返回拷貝鍊錶的頭;

程式:struct node* copyrandomlist(struct node* head)

struct node* cur = head;

while (cur)

cur = head;

while (cur)

else

cur = copy->next; }

cur = head;

struct node* copyhead = head->next ,*copy_n=copyhead->next,*copy=copyhead;

while (cur)

else

cur = copy_n;

copy = copy_n->next;

copy_n = copy->next;

} return copyhead;

}

資料結構 複雜鍊錶的複製

實現複雜鍊錶的複製。因為複雜鍊錶中每個節點都有乙個指向任意節點的指標。所以在確定這個鍊錶的複製的時候。我們需要進行空間來換取時間上的效率。然後我們可以將鍊錶複製項結合在拆分。思路就這樣。我直接給出 pragma once include include include typedef int dat...

資料結構之複雜度分析

目錄 1 為什麼需要複雜度分析?2 大o複雜度表示法 3 時間複雜度 3.1 只關注迴圈執行次數最多的一段 3.2 總的複雜度等於量級最大的那段 的複雜度 加法法則 3.3 巢狀 的複雜度等於巢狀內外 複雜度的乘積 乘法法則 3.4 時間複雜度 4 空間複雜度 5 時間複雜度擴充套件 網上一直有乙個...

資料結構(C語言) 單向鍊錶

c語言的單向鍊錶,就是在乙個將一些資料放在乙個結構體裡,然後在結構體裡加 struct next 的成員,用於指向下一結點。引用時,建立乙個臨時的結構體變數進行引用。如原結構體變數為 struct p 則 可建立 struct temp,然後 for temp p temp next null te...