題目:
給你乙個長度為 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...