题目 复制含有随机指针节点的链表
一种特殊的链表节点描述如下
typedef struct ListNode{
int data;
ListNode* next;
ListNode* random;
ListNode(int x):
data(x),next(NULL),random(NULL){}
}
ListNode类中的data是节点值,next指针和正常的单链表指针中的next指针的意义一样,都指向下一个节点,random指针是ListNode类中的新增的指针,这个指针可能指向链表中的任意一个节点,也可能指向NULL。
给定一个由ListNode节点类型组成的无环单链表的头节点head,请实现一个函数完成这个链表中所有结构的复制,并返回复制的新链表的头节点。
代码
ListNode* copyListWithRand1(ListNode* head){
hash_map<ListNode*,ListNode*>hashNode;
ListNode* cur=head;
while(cur!=NULL){
ListNode* temp=new ListNode (cur->data);
hashNode[cur]=temp;
cur=cur->next;
}
cur=head;
while(cur!=NULL){
hashNode[cur]->next=hashNode[cur->next];
hashNode[cur]->random=hashNode[cur->random];
}
return hashNode[head];
}
本文介绍了一种特殊链表——包含随机指针的链表的复制方法。该链表除了常规的next指针外,还包含了一个可指向链表中任一节点或NULL的random指针。通过使用哈希映射的方式,文章详细阐述了如何复制这种链表并保持其原有的结构。
7609

被折叠的 条评论
为什么被折叠?



