/*******************
wz asust 2016
1:先int例項 後模板化
2: 複製不能改變原串的資料及結構
3: 隨機指標的正確性
思考:除了追加新結點後分離新舊鍊錶;
還有一複雜度高的演算法,就是記錄下每乙個結點,隨機指標指向的結點在整個鏈中的排序(佇列實現)建立新煉表後,根據佇列記錄,連線隨機指標;
不能記錄值,僅能實現一些特殊的,如無重複段的鏈;
*******************/
#include #include#include"wz.h"
struct complexnode
;
struct mynode
; complexnode* clone(complexnode* phead)
p = phead;
tail = newhead;
while(p!=null)
p = p->pnext;
tail = tail->pnext;
}return newhead;
} void deletelist(complexnode* phead)
}void print(complexnode* phead)
coutp=p->next;
}coutcomplexnode*add= new complexnode;
add->value=p->value;
add->psibling=null;add->pnext=p->pnext;
p->pnext=add;
p=phead;
q=p->pnext;
newhead=q;
coutwhile(k--)
//while(p->pnext)
// /** made new link:q***/
// newhead=q;
// while(q->pnext)
///*****new link out*****/
// p=phead;
q=newhead;
while(q->pnext)
// delete p->pnext; //can ont do this
p->pnext=null; // must do this or add 4 to old link
// new link out
// p=phead;
}return newhead;
}void t2()
int main()
// 隨機處的bug 沒處理
複雜單鏈表的複製
複雜單鏈表的複製 一 何為複製單鏈表 就我們所知,單鏈表也就是乙個結點包含乙個資料域和乙個指標域,這樣若干個結點構成的鍊錶。而複雜單鏈表和普通單鏈表差不多,唯一的不同就是多乙個random。我們可以用一張圖來表示 那我們怎麼來進行複雜鍊錶的複製呢,現在公認的最有效的方法只有一種,就是在原有單鏈表的每...
複雜單鏈表的複製
typedef struct complexlist complexlist,pcomplexlist void initlist pcomplexlist phead complexlist buynode datatype x 建立乙個複雜單鏈表 void insertnode pcomplex...
單鏈表的複製 C 實現
include includeusing namespace std typedef int datatype 定義鍊錶資料結構 typedef struct nodelnode,linklist int main 尾插法 建立鍊錶 linklist tail create linklist h n...