最简单好理解的思路

复杂链表的复制

http://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba

public class Solution {
public RandomListNode Clone(RandomListNode pHead)
{
//如果链表为null,则返回null
if(pHead == null) return null;
//如果链表不为null,则创建一个新的头节点,两个指针,一个指向老链表当前节点,另一个指向新链表当前节点。
RandomListNode newHead = new RandomListNode(pHead.label);
RandomListNode cuur = pHead;
RandomListNode newCuur = newHead;
//当老链表的当前节点不为null时,遍历链表每次将老链表的next和random赋值给新节点,如果next或random为null则赋值null。
while(cuur != null){
newCuur.next = cuur.next == null ? null : new RandomListNode(cuur.next.label);
newCuur.random = cuur.random == null ? null : new RandomListNode(cuur.random.label);
cuur = cuur.next;
newCuur = newCuur.next;
}
//最后返回新链表的头节点
return newHead;
}
}

全部评论
niubi
点赞 回复 分享
发布于 2021-01-03 12:25

相关推荐

每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务