求解答

复杂链表的复制

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


在最后一步拆分链表那里始终想不通问题在哪里,求解惑


/*
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;
        }
        RandomListNode curNode=pHead;
        while(curNode!=null){
            RandomListNode cloneNode=new RandomListNode(curNode.label);
            cloneNode.next=curNode.next;
            curNode.next=cloneNode;
            curNode=curNode.next.next;
        }
        curNode=pHead;
        while(curNode!=null){
            if(curNode.random!=null){
                curNode.next.random=curNode.random.next;
            }
            curNode=curNode.next.next;
            
        }
        
        /*
        这块有问题。。。最后输出为空
        */
        curNode=pHead;
        RandomListNode pCloneHead=pHead.next;
        RandomListNode curClone=curNode.next;
        while(curClone.next!=null){
            curNode.next=curNode.next.next;
            curNode=curClone.next;
            curClone.next=curClone.next.next;
            curClone=curClone.next;
        }
        return pCloneHead;
    }
}














全部评论
和你一样,就最后一段有问题,没看出问题在哪,换前面人的可过,佛了,求解
1 回复 分享
发布于 2020-04-22 13:01
你这个问题出现在链表的最后一个节点上,当curNode指向链表倒数第二个节点时,curNode.next指向最后一个节点,也就是curClone所指向的节点,此时curClone.next为空,此时跳出while循环,而curNode.next还依旧指向于curClone节点,它应该为空才对。
点赞 回复 分享
发布于 2020-11-12 21:15

相关推荐

07-23 14:04
东北大学 C++
既然这样,为什么不点击就送呢
牛马88号:因为你合适。但有很多笔试就挂了、通过了再排序的
点赞 评论 收藏
分享
06-17 22:34
湖南工学院 Java
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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