複雜鍊錶複製

2021-08-03 20:34:49 字數 1569 閱讀 6366

//複雜鍊錶複製的標頭檔案mlist.h:
#ifndef __mlist_h__
#define __mlist_h__

#include #include #includetypedef int datatype;

typedef struct node

node,*pnode,*plist;

pnode crealist(datatype d);//建立

void pushback(plist p_list, datatype data);//尾插

void printlist(plist p_list);//列印鍊錶

pnode copyrandomlist(plist p_list);//複製鍊錶

//plist buynode(int d);

#endif //__mlist_h__

//複雜鍊錶複製的原始檔mlist.c
#include"mlist.h"

pnode p_list = null;

pnode crealist(datatype d)//建立

p_list->data = d;

p_list->next = null;

p_list->random = null;

return p_list; }

void pushback(plist p_list, datatype d)//尾插

while (p1->next != null)

p2->data = d;

p1->next = p2;

p2->next = null;

p2->random =p1;//設定p2節點random->為上乙個p1節點

}void printlist(plist p_list)

printf("%d->null\n", p_list->data);

}pnode copyrandomlist(plist p_list)//複雜鍊錶複製

//random指向複製

pnode q3 = p;

while (p->next->next != null)

else

}pnode ptr = q3;

pnode w1 = q3;

pnode w2 = q3->next;

pnode ptr1 = w1;

pnode ptr2 = w2;

while (ptr->next->next!=null) }

return ptr2;

}

//複雜鍊錶複製的test.c

#include"mlist.h"

void test()

int main()

複製複雜鍊錶

題目 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 首先有三種解法 第一種就是中規中矩的解法,首先複製next指標的節點,之後...

複雜鍊錶複製

題目要求 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 自己的想法 對於本題目,我一開始很悶,這不就是吧節點返回而已嗎?但是當我看到了題...

複雜鍊錶複製

輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 核心思路 複製鍊錶中每乙個節點,插入到被複製節點後面 維護複製節點的隨機指標,該指標指向被...