複雜單鏈表的複製

2021-07-11 06:08:17 字數 1354 閱讀 3931

/*******************

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...