复杂链表的复制
来源:互联网 发布:做数据库有前途吗 编辑:程序博客网 时间:2024/06/07 20:25
复制复杂链表,一个链表的每一个节点有一个指向nest指针指向
下一个节点,还有一个random指针指向这个链表
中的一个随机节点或者NULL,现在要求实现复制这个链表,返回复制##后的新链表
函数原型:pNode CapyComplexLink(pNode2 pHead)*
原链表如下:
//节点类型typedef struct Node2{ DateType date; struct Node2 *nest1; struct Node2 *random;}Node2,*pNode2;
函数的实现
pNode2 CapyComplexLink(pNode2 pHead){ pNode2 pHead2;//新链表的头 assert(pHead); if (pHead) return NULL; pNode2 ptail = NULL, pnewNode = NULL; ptail = pHead; pHead2 = ptail; //构建一个新的链表,奇数节点为原节点,偶节点为新节点。 //原链表1->2->3->4->5->NULL; //构建后1->1->2->3->3->4->4->5->5->NULL;(只考虑nest指针作用) while (ptail) { pnewNode = (pNode2)malloc(sizeof(Node2)); if (pnewNode == NULL) return NULL; pnewNode->nest1 = ptail->nest1; pnewNode->random=NULL; pnewNode->date = ptail->date; ptail->nest1 = pnewNode; ptail = pnewNode->nest1; } ptail = pHead; //pnewNode = ptail->nest1; while (ptail)//复制random指针域 { pnewNode = ptail->nest1; pnewNode->random = ptail->random->nest1; ptail = pnewNode->nest1; } ptail = pHead; pHead2=pnewNode = ptail->nest1; while (ptail->nest1)//还原原链表,剥离复制后的所求链表 { ptail->nest1 =pnewNode->nest1; pnewNode->nest1 = ptail->nest1; } return pHead2;}
阅读全文
0 0
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复制复杂的链表
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- mybatis mysql 插入对象返回数据主键id
- 设计模式_18:桥接模式
- 文章标题
- 深度学习在计算机视觉领域的前沿进展
- 我的Linux学习之路(二、配置网络)
- 复杂链表的复制
- RxJava操作符之组合操作符(六)
- Android 异步消息处理机制
- LeetCode 38 Count and Say
- Java producer-consumer(生产者/消费者模式)
- 解释mysql errno121错误原因
- http实现虚拟主机的简单搭建
- System Design——什么是“SystemDesign”问题
- markdown基础语法