当前位置: 首页 > 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.dtcms.com/a/306603.html

相关文章:

  • Tlias 案例-整体布局(前端)
  • docker镜像加速及国内镜像源
  • cocos打包web - ios设备息屏及前后台切换音频播放问题
  • 美国人工智能行动计划:洞察 AI 发展新路径​​
  • 怎样在 Vue 中定义全局方法?
  • 快速删除Word和WPS文字中的空白行
  • LLM—— 基于 MCP 协议(SSE 模式)的工具调用实践
  • PYTHON从入门到实践-17通过网络API获取数据与可视化
  • Deforum Stable Diffusion,轻松实现AI视频生成自由!
  • Python爬虫04_Requests豆瓣电影爬取
  • 《消息队列学习指南:从 MQ 基础到 SpringAMQP 实践》
  • AI一周事件(2025年7月22日-7月29日)
  • wps批量让浮动在表格的图片跟随单元格移动和调整大小
  • 树莓派 香橙派SD卡TF卡U盘系统备份与还原
  • 【Kubernetes 指南】基础入门——Kubernetes 201(二)
  • 【昇腾】基于Atlas 200I DK A2开发者套件修改usb0的默认IP重启后被恢复的问题处理_20250730
  • 第十二天:C++ 标准库函数分类总结
  • LeetCode 56 - 合并区间
  • SpringBoot收尾+myBatis plus
  • 算法精讲:二分查找(二)—— 变形技巧
  • JavaScript中的数据类型以及存储上的差别
  • Keil STM32工程各文件作用
  • ArcGIS以及ArcGIS Pro如何去除在线地图制作者名单
  • 黑马点评-超卖问题
  • 实现了加载 正向 碰撞 雅可比 仿真
  • 4.Origin2021如何绘制多组误差棒图?
  • Vulnhub靶场:thales
  • c++之基础B(第一课)
  • 力扣面试150(44/150)
  • Linux 系统进程管理与计划任务详解