【数据结构】复杂链表深度拷贝

一、复杂链表深度拷贝

####【1】题目:
已知一个复杂链表,该链表除了有一个指向下一个节点的指针外,还有一个指向任意节点的指针,
求:
设计一种方法,拷贝构造该链表

####【2】算法思路:
1、使用一个map,将链表的地址映射成一个整数,即给链表的每个节点编号
2、使用一个vector,将新链表中的节点按照map中的指向指好
####【3】代码实现:

#include<iostream>
#include<vector>
#include<map>
using namespace std;

struct RandomList
{
	int label;
	RandomList* next;
	RandomList* random;
	RandomList(int x)
		:label(x)
		,next(NULL)
		,random(NULL)
	{}
};

class solution
{
public:
	RandomList* CopyRandList( RandomList* head)
	{
		map<RandomList*, int> node_map;
		vector<RandomList*> node_vec;

	    RandomList* ptr = head ;
	    int  i = 0 ;
	while(ptr)
	{
		node_vec.push_back(new RandomList(ptr->label));
		node_map[ptr] = i;
		ptr =ptr->ne
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值