de關於複雜鍊錶:
向複雜鍊錶的複製。乙個鍊錶的每個節點,有乙個指向next指標指向下乙個節點,還有乙個bext2指標指向這個鍊錶中的乙個隨機節點或者null
實現**如下:
#pragma once
#include#includetypedef int datatype;
typedef struct hardlist
hardlist;
hardlist* _buynode(datatype x)//初始化
void pushback(hardlist* &phead, datatype x)
tial->next = _buynode(x); }}
hardlist* find(hardlist*& phead, datatype x)
cur = cur->next;
} return null;
}void printslist(hardlist* &phead)
hardlist *cur = phead;
while (cur)
printf("null\n");
}hardlist* copylist(hardlist* &phead)
//hardlist *tmp = _buynode(cur->data);
//tmp->next = cur->next;
//cur->next = tmp;//完成複製
//下一步完成next2的複製
cur = phead;
while (cur)
cur = cur->next->next;
}//完成next2的複製
//拆分
每個節點的結構為:
typedef struct hardlist
datatype data;
struct hardlist *next;
struct hardlist *next2;
}hardlist;
先建立好單鏈表,考慮next2這個分量,則需要o(n^2)的時間複雜度
這裡我們採用一種巧妙的方法
通過對每乙個節點進行複製並插入到原節點的後方,則複製的節點的next2 指標指向的節點則在原節點next2指標的的下乙個位置,這樣就能夠找到複製的節點的next2 指標,然後將奇數字置與偶數字置的節點進行拆分,這樣完成了複雜鍊錶的複製
題的思路在於 如何找到節點的next2指標,我們將每乙個指標的拷貝插入到原節點之後,這樣既完成了每乙個節點的複製,又能方便找到複製的鍊錶的next2指標指向的位置:
本文出自 「10945910」 部落格,請務必保留此出處 鍊錶 複雜鍊錶的複製
問題描述 請實現函式complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個結點除了有乙個next指標指向下乙個結點之外,還有乙個random指向鍊錶中的任意結點或者null。結點的定義如下 struct randomlistnod...
複雜鍊錶複製
複雜鍊錶複製的標頭檔案mlist.h ifndef mlist h define mlist h include include includetypedef int datatype typedef struct node node,pnode,plist pnode crealist datat...
複製複雜鍊錶
題目 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 首先有三種解法 第一種就是中規中矩的解法,首先複製next指標的節點,之後...