35、复杂链表的赋值

原创 2018年04月16日 09:46:10
public RandomListNode Clone(RandomListNode pHead)
    {
        if(pHead==null) return null;
        //将新链表每个节点插在旧链表对应的每个节点后面
        RandomListNode oldNode = pHead;
        while(oldNode!=null)
        {
            RandomListNode node = new RandomListNode(oldNode.label);
            node.next = oldNode.next;
            oldNode.next = node;
            oldNode = oldNode.next.next;
        }

        //将新链表每个节点的random指向自己前一个节点的random的下一个节点
        oldNode = pHead;
        while(oldNode!=null)
        {
            if(oldNode.random!=null)
            oldNode.next.random = oldNode.random.next;
            oldNode = oldNode.next.next;
        }

        //将链表根据奇偶分成旧新链表
        oldNode = pHead;
        RandomListNode head = oldNode.next;
        RandomListNode node = head;
        while(oldNode!=null)
        {
            RandomListNode oldNext = oldNode.next.next;
            if(oldNext!=null)
                node.next = oldNext.next;
            oldNode.next = oldNext;
            oldNode = oldNode.next;
            if(oldNode!=null)
                node = oldNode.next;
        }
        return head;
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gongdileidechouzhu/article/details/79956588

剑指Offer:复杂链表的复制

# -*- coding:utf-8 -*- #class RandomListNode: # def __init__(self, x): # self.label = x #...
  • destiny_python
  • destiny_python
  • 2017年07月26日 10:00
  • 399

复杂链表的赋值

链表结构中,每个节点不仅有一条指向下一节点的next指针,同时含有一条rand指针,rand指针可能指向任何一个链表中的节点,请复制这种含有rand指针节点的链表。   方法1.创建一个没有rand时...
  • u012813201
  • u012813201
  • 2017年07月14日 16:01
  • 130

LeetCode(Copy List with Random Pointer) 复杂链表的深拷贝

题目要求:
  • lqcsp
  • lqcsp
  • 2014年04月07日 05:05
  • 1045

浅谈复杂链表的复制

链表是一种很常见的数据结构,单链表、双向链表、循环链表和复杂链表都是其衍生物。复杂链表之所以命名为复杂链表,也正是由于其结构的复杂。它比其他其他种类的链表多了一个指针域,这个指针域可以指向链表中的任一...
  • JulyShuofeng
  • JulyShuofeng
  • 2016年06月03日 13:15
  • 203

[LeetCode]Copy List with Random Pointer &Clone Graph 复杂链表的复制&图的复制

/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * in...
  • ckl_soft
  • ckl_soft
  • 2014年11月04日 09:43
  • 1143

[LintCode]35.翻转链表 ***

翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 第一种方法就是重新建立一个单链表newList,每次将head中的第一个结点放到ne...
  • zwy1258432405
  • zwy1258432405
  • 2017年07月13日 22:48
  • 299

链表面试题之复杂链表的复制

复杂链表的复制:一个链表的每个节点,有一个指向next指针指向下一个节点,还有一个RandNext指针指向这个链表中的一个随机节点或者NULL,现在要求实现复制这个链表,返回复制后的新链表。 //ps...
  • m0_37956168
  • m0_37956168
  • 2017年06月15日 21:45
  • 182

Lintcode 35.翻转链表

1.问题描述:翻转一个链表,将给定的链表按他相反的顺序表示。 2.解题思路:相当于尾插法,创建dummy先保存了head的地址,将创建的temp保存head->next的地址,这样就让head下移,...
  • wangyukl
  • wangyukl
  • 2017年03月25日 23:37
  • 944

《苦练算法》-剑指Offer- 二十五、复杂链表的复制 -python编写

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,...
  • qq_33431368
  • qq_33431368
  • 2018年02月09日 11:01
  • 47

剑指offer面试题26:复杂链表的复制Java实现

题目描述: 一个复杂链表,在复杂链表中,每个结点除了有一个next指针指向下一个结点外,还有一个sbiling指向链表中的任意结点或者null。 下图是一个复杂链表的示例,Null的指针没...
  • jackyechina
  • jackyechina
  • 2016年10月25日 20:36
  • 465
收藏助手
不良信息举报
您举报文章:35、复杂链表的赋值
举报原因:
原因补充:

(最多只允许输入30个字)