剑指offer系列源码-复杂链表的复制
来源:互联网 发布:java heap size 设置 编辑:程序博客网 时间:2024/06/06 03:47
题目1524:复杂链表的复制时间限制:1 秒内存限制:128 兆特殊判题:否提交:606解决:292题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n (1<=n<=1000):n代表将要输入的链表元素的个数。(节点编号从1开始)。接下来有n个数,表示链表节点中的值。接下来有n个数Ti,Ti表示第i个节点的另一个指针指向。Ti = 0 表示这个指针为NULL。输出:对应每个测试案例,输出n行,每行有二个数,第一个代表当前节点值,第二个代表当前节点的特殊指针的值。样例输入:51 2 3 4 53 5 0 2 0样例输出:1 32 53 04 25 0
#include <iostream>#include<stdio.h>using namespace std;struct ListNode{ int value; ListNode* next; ListNode* random_link;};int main(){ int n,num; while(scanf("%d",&n)!=EOF){ ListNode* nodes = new ListNode[n+1]; for(int i=1;i<=n;i++){ scanf("%d",&nodes[i].value); nodes[i].next = NULL; nodes[i].random_link = NULL; } for(int i=1;i<=n;i++){ scanf("%d",&num); if(num>0) nodes[i].random_link = &nodes[num]; } for(int i=1;i<=n;i++){ printf("%d %d\n",nodes[i].value,nodes[i].random_link!=NULL?nodes[i].random_link->value:0); } } return 0;}
#include <iostream>#include<stdio.h>using namespace std;struct ListNode{ int value; ListNode* next; ListNode* random_link;};//step1 复制节点void cloneNodes(ListNode* pHead){ ListNode* pNode = pHead; while(pNode!=NULL){ ListNode* pClone = new ListNode(); pClone->value = pNode->value; pClone->next = pNode->next; pClone->random_link = NULL; pNode->next = pClone; pNode = pClone->next; }}void connectRandomNodes(ListNode* pHead){ ListNode* pNode = pHead; while(pNode){ ListNode* pClone = pNode->next; if(pNode->random_link!=NULL){ pClone->random_link = pNode->random_link->next; } pNode = pClone->next; }}ListNode* reconnentNodes(ListNode* pHead){ ListNode* pNode = pHead; ListNode* pCloneHead = NULL; ListNode* pCloneNode = NULL; if(pNode!=NULL){ pCloneHead = pCloneNode = pNode->next; pNode->next = pCloneNode->next; pNode = pNode->next; } while(pNode){ pCloneNode->next = pNode-next; pCloneNode = pCloneNode->next; pNode->next = pCloneNode->next; pNode = pNode->next; } return pCloneHead;}//将上面三步合起来ListNode* clone(ListNode* pHead){ cloneNodes(pHead); connectRandomNodes(pHead); return reconnentNodes(pHead);}int main(){ return 0;}
0 0
- 剑指offer系列源码-复杂链表的复制
- 【剑指offer系列】 复杂链表的复制___26
- 剑指offer系列之24:复杂链表的复制
- 剑指offer系列-T26复杂链表的复制
- 【剑指offer】复杂链表的复制
- 剑指offer--复杂链表的复制
- 《剑指offer》复杂链表的复制
- 剑指offer:复杂链表的复制
- 剑指offer - 复杂链表的复制
- 剑指Offer--复杂链表的复制
- 剑指offer:复杂链表的复制
- 【剑指offer】复杂链表的复制
- 剑指offer-复杂链表的复制
- 剑指offer:复杂链表的复制
- 剑指offer:复杂链表的复制
- [剑指offer]复杂链表的复制
- 【剑指offer】复杂链表的复制
- 剑指offer|复杂链表的复制
- 水波纹效果----单环波纹
- Package 'sun-java6-jdk' has no installation candidate
- android sdk manager 无法更新解决方法
- 采用V4L2读取的USB摄像头
- extjs 监听器的使用
- 剑指offer系列源码-复杂链表的复制
- 兮°Android下的屏幕适配问题的一点心得
- 你可以看低我,但是你不能否认我在做的努力
- c#连接数据库,执行存储过程
- leetcode——Merge Intervals
- iOS-- UITextField 详解
- 【实战】mariadb审计
- structs2 result type介绍
- 浅谈HTTP中Get与Post的区别