求解答

复杂链表的复制

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

相关推荐

03-21 08:46
已编辑
门头沟学院 C++
只写bug的程序媛:本科能找到好的,真不建议读研,提前占坑比较好,本科找不到好的,也不建议读研,因为两三年之后压力只会更大,唯一的解就是行业好起来
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务