当前位置: 首页 > news >正文

数据结构(7)单链表算法题OVA

随机链表的复制

1、题目描述

https://leetcode.cn/problems/copy-list-with-random-pointer

2、思路分析 

第一步、在原链表的基础上拷贝节点

第二步、置random指针

 只要节点不为空,那么就满足以下这个结论:copy -> random = cur -> random -> next

  

第三步、断开新旧链表 

定义指针pcur指向原链表的头结点,用来遍历整个链表,再定义拷贝链表的头尾指针copyHead和copyTail。 

3、参考代码 

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/
typedef struct Node Node;
Node* buyNode(int x)
{Node* newNode = (Node*)malloc(sizeof(Node));newNode->val = x;newNode->next = newNode->random = NULL;return newNode;
}
void AddNode(Node* head)
{Node* pcur = head;while(pcur){Node* newnode = buyNode(pcur->val);Node* next = pcur->next;newnode->next = next;pcur->next = newnode;pcur = next;}
}
void setRandom(Node* head)
{Node* pcur = head;while(pcur){Node* copy = pcur->next;if(pcur->random){copy->random = pcur->random->next;}pcur = copy->next;}
}
struct Node* copyRandomList(struct Node* head) 
{if(head == NULL){return head;}//在原链表的基础上拷贝节点并插入到原链表中AddNode(head);//设置random指针setRandom(head);//断开新链表Node* pcur = head;Node* copyHead, *copyTail;copyHead = copyTail = pcur->next;while(copyTail->next){pcur = copyTail->next;copyTail->next = pcur->next; copyTail = copyTail->next;}return copyHead;
}

http://www.lryc.cn/news/604936.html

相关文章:

  • LLM 模型部署难题的技术突破:从轻量化到分布式推理的全栈解决方案
  • 【数据结构初阶】--二叉树(五)
  • 数据结构——单链表1
  • jmeter读取上游接口并遍历数组数据并进行压测
  • Vulnhub靶场:ica1
  • 【网络运维】 Linux:使用 Cockpit 管理服务器
  • IO复用实现并发服务器
  • 2025年7月技术问答第6期
  • 无人机入门--个人笔记
  • 电力设施通道防外破防异物实时监控预警装置的核心功能是什么
  • C 语言与 C++、Java、Python 等编程语言的区别
  • 国产音频DA转换芯片DP7361支持192K六通道24位DA转换器
  • Android RTMP推送|轻量级RTSP服务同屏实践:屏幕+音频+录像全链路落地方案
  • 工业计算机ARM-如何实现工业数字化升级EC100!
  • 论文阅读|NeurIPS 2024|Mamba进一步研究|MSVMamba
  • 原生微信小程序实现语音转文字搜索---同声传译
  • NAT技术与代理服务
  • SNR-Aware Low-light Image Enhancement 论文阅读
  • 【网络工程师软考版】路由协议 + ACL
  • 15、点云<—>深度图转换原理
  • rabbitmq--默认模式(点对点)
  • 【深度学习新浪潮】3D城市建筑多样化生产的研发进展调研
  • vulhub-Thales靶机练习
  • STL学习(?、常用的算数算法和集合算法)
  • SAP-ABAP:SAP ABAP OpenSQL JOIN 操作权威指南高效关联多表数据
  • xxljob-快速上手
  • 亚马逊云科技:赋能企业数字化转型,解决实际发展难题
  • 【7】串口编程三种模式(查询/中断/DMA)韦东山老师学习笔记(课程听不懂的话试着来看看我的学习笔记吧)
  • 飞算科技:原创技术重塑 Java 开发,引领行业数智化新浪潮
  • Power Pivot 数据分析表达式(DAX)