複雜鍊錶的複製

2021-07-12 08:03:17 字數 1834 閱讀 6540

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指標的節點,之後...