0
問題 您將得到一個重複的鏈接列表(給出:頭,最後的元素 - >未來= NULL)鏈接與NEXT指針和隨機指針LL節點的屬性列表。創建具有給定的鏈接列表
struct node {
node *NEXT;
node *RANDOM;
}
現在你要複製這個LL(僅C代碼)
問題 您將得到一個重複的鏈接列表(給出:頭,最後的元素 - >未來= NULL)鏈接與NEXT指針和隨機指針LL節點的屬性列表。創建具有給定的鏈接列表
struct node {
node *NEXT;
node *RANDOM;
}
現在你要複製這個LL(僅C代碼)
我給一個直接的解決方案通過節點複製鏈接列表節點。
假設你有這樣的鏈表,HEAD - > Node1 - > Node2 - > ... NodeN - > NULL。
struct node * head_dup = NULL; //Create the head of the duplicate linked list.
struct node * tmp1 = head, * tmp2 = head_dup; //tmp1 for traversing the original linked list and tmp2 for building the duplicate linked list.
while(tmp1 != NULL)
{
tmp2 = malloc(sizeof(struct node)); //Allocate memory for a new node in the duplicate linked list.
tmp2->RANDOM = malloc(sizeof(struct node)); //Not sure what you are storing here so allocate memory to it and copy the content of it from tmp1.
*(tmp2->RANDOM) = *(tmp1->RANDOM);
tmp2->NEXT = NULL; //Assign NULL at next node of the duplicate linked list.
tmp2 = tmp2->NEXT; //Move both the pointers to point the next node.
tmp1 = tmp1->NEXT;
}
這是一個功課題嗎? 爲什麼不給我們展示一些你已經試過的代碼,並告訴我們你面臨的問題。 – kkaosninja 2015-04-01 03:51:51
不是家庭作業,但我只是讀了幾個在線帖子,並試圖得到有效的答案。 我試圖在兩個原始節點之間插入新節點原始LL:頭→n1→n2→ 新頭→頭→新1→n1→新2→n2 .... 然後只需捕捉應對RANDOM鏈接的新節點。 我想知道是否有人有更好的想法來輕鬆完成。 – JustVirtually 2015-04-01 03:58:06