做复杂链表的复制,一直提交不过,童鞋们围观一下看哪的问题?

/*
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 null;
  }

  // 当前链表中插入clone结点
  RandomListNode p = pHead;
  while (p != null) {
   RandomListNode newNode = new RandomListNode(p.label);
   newNode.next = p.next;
   p.next = newNode;
   p = p.next.next;
  }

  // 給clone结点random赋值,为原结点randmon结点的next结点
  p = pHead;
  while (p != null) {

   if (p.random != null) {
    p.next.random = p.random.next;
   } else {
    p.next.random = null;
   }

   p = p.next.next;
  }

  // 新结点单独成链表
  p = pHead.next;
  while (p != null) {
   if (p.next == null) {
    break;
   }

   p.next = p.next.next;
   p = p.next.next;
  }

  return pHead.next;
 
    }
}

全部评论
// 当前链表中插入clone结点    这部分代码中,新插入的clone结点的random指针没有给出声明吧,所以应该在while循环中加入 newNode.random=null;
点赞 回复
分享
发布于 2016-07-10 16:01

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务