//複雜鍊錶複製的標頭檔案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。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 核心思路 複製鍊錶中每乙個節點,插入到被複製節點後面 維護複製節點的隨機指標,該指標指向被...