复杂链表的复制
来源:互联网 发布:销量预测模型 python 编辑:程序博客网 时间:2024/05/19 18:43
题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
思路:分三步 。 1.复制该链表的每一个结点到对应每个结点的后面。 2,将每个结点上的random结点复制给刚刚复制的结点,记住是random.next,3.拆分链表.
代码如下:
/*public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; }}*/public class Solution { public RandomListNode Clone(RandomListNode pHead) { if(pHead == null)return pHead; RandomListNode currentNode = pHead; //先将该链表上的每一个结点都复制到每个结点的后面 while(currentNode != null){ RandomListNode node = new RandomListNode(currentNode.label); node.next = currentNode.next;//先将以前的结点的next复制到重新复制的next上 currentNode.next = node;//以前的结点和复制的结点连接起来 currentNode = node.next;//然后指向复制的结点 } //复制随机的random currentNode = pHead; while(currentNode != null){ RandomListNode node = currentNode.next; if(currentNode.random != null){ node.random = currentNode.random.next; } currentNode = node.next; } //拆分复杂链表 RandomListNode pp = pHead.next; RandomListNode tmp = null; currentNode = pHead; //这里的循环是将第一个结点与第三个结点相连,第二个结点与第四个结点相连 while(currentNode.next != null){ tmp = currentNode.next; currentNode.next = tmp.next; currentNode = tmp; } return pp; }}
0 0
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复制复杂的链表
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- spring官网下载相关的文档方法
- 杭电OJ2024-C语言合法标识符
- 整棵树上节点间的最大距离
- 仅此记录所学所感
- DP DPI SP PPI 辨析
- 复杂链表的复制
- 指针和数组(一维,二维,三维)以及野指针的避免
- js学习第一天
- Mac上更新Ruby
- final,多态,抽象,接口
- 20160713 程序流程控制
- PAT 1001 Public Bike Management
- Path Sum II
- Android framework中已经包含support v4