zoukankan      html  css  js  c++  java
  • 复杂链表的复制

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 

    题目描述

    输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
     
    思路:
      1、复制每个节点,并将复制节点A得到的A1,插入到A的后面
      2、遍历链表,找随机指针的指向(A1->random = A->random->next)
      3、将原链表与复制链表进行拆分(temp = A->next;A->next = temp->next;A = temp,循环指向此句直到A->next为空)
    图示例:


     代码如下:

    /*
    struct RandomListNode {
        int label;
        struct RandomListNode *next, *random;
        RandomListNode(int x) :
                label(x), next(NULL), random(NULL) {
        }
    };
    */
    class Solution {
    public:
        RandomListNode* Clone(RandomListNode* pHead)
        {
            if(pHead == NULL)
                return NULL;
            //复制每个节点
            RandomListNode* currNode = pHead;
            while(currNode)
            {
                RandomListNode* node = new RandomListNode(currNode->label);
                node->next = currNode->next;
                currNode->next = node;
                currNode = node->next;
            }
            //找随机指针的指向
            currNode= pHead;
            while(currNode)
            {
                RandomListNode *node = currNode->next;
                if(currNode->random)
                {
                    node->random = currNode->random->next;
                }
                currNode = node->next;
            }
            //拆分
            RandomListNode *pCloneHead = pHead->next;
            RandomListNode *temp; 
            currNode = pHead;
            while(currNode->next)
            {
                temp = currNode->next;
                currNode->next = temp->next;
                currNode = temp;
            }
            return pCloneHead;
        }
    };
  • 相关阅读:
    docker使用
    接口自动化python3+requests+pytest/unitest
    Django--日常操作
    Redis
    散碎
    Django-- 类视图 Mixin 扩展类
    Django--类视图
    Django--响应
    python高级--正则表达式
    python-数据类型-字符串--常用操作
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12561965.html
Copyright © 2011-2022 走看看