【数据结构】链表相关题目(中档题)
创始人
2025-05-30 07:13:30
0

在这里插入图片描述

🚀write in front🚀
📜所属专栏:初阶数据结构
🛰️博客主页:睿睿的博客主页
🛰️代码仓库:🎉VS2022_C语言仓库
🎡您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!
关注我,关注我,关注我你们将会看到更多的优质内容!!

在这里插入图片描述

文章目录

  • 前言:
    • 例题1:
      • 方法1:
      • 方法2:
    • 例题2:
      • 完整代码:
  • 总结

前言:

  在前面的练习中,我们简单练习了链表的相关题目,今天我们在来做一些拓展!

例题1:

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

方法1:

  在上一篇博客里面,我们讲述了快慢指针的概念:通过步长的差异处理环的问题。而这道题我们要寻找入口点,我们该如何处理呢?

首先,我们假设

  • 起始点到入口的长度为L,
  • 入口到相遇点的距离为X,
  • 环的长度为C。

接下来我们通过快慢指针的两个性质(快指针是慢指针步数的两倍,快慢指针最后相遇)列出一个方程:
在这里插入图片描述
  由得出的结论我们可以看出,如果让一个指针a从起点出发,另一个指针b从相遇点出发,如果是闭环,则他们一定会相遇!(这里我们并不需要算出n的值,因为n的值是是让a指针多走n-1个整圈,不影响和b指针相遇)。
下面我们来看看代码:

struct ListNode *detectCycle(struct ListNode *head) 
{struct ListNode*slow=head,*fast=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;if(fast==slow){struct ListNode*cur=head;while(cur!=slow){cur=cur->next;slow=slow->next;}return slow;}}    return NULL;
}

方法2:

  如果同学们在做题时无法自己推出这个结论,那么此时我们也可以将相遇点断开,此时就变成了寻找公共节点的题目了。
在这里插入图片描述

例题2:

在这里插入图片描述
对于这道题目,大家可能最先会想到计数器的方法,通过记录每个random的位置,在拷贝的链表里面找到对于位置依次连接。但是这样会导致时间复杂度非常的低下:O(N^2)
在这里插入图片描述
为了降低复杂度,就不得不使用另外一种方法。要降低时间复杂度,我们就希望能快速的找到原节点的拷贝节点。怎么找呢?

1.拷贝节点链接在原节点后面
在这里插入图片描述
在这里插入图片描述

2.此时拷贝节点的random就是原节点random->next
在这里插入图片描述
在这里插入图片描述

3.拷贝节点解下来,链接成新链表,最后将原链表还原。
在这里插入图片描述
在这里插入图片描述

完整代码:

struct Node* copyRandomList(struct Node* head) 
{//第一步struct Node*cur=head;while(cur){struct Node* newnode=(struct Node*)malloc(sizeof(struct Node));struct Node* next=cur->next;cur->next=newnode;newnode->next=next;newnode->val=cur->val;cur=next;}//第二步cur=head;while(cur){struct Node*prev=cur->next;if(cur->random==NULL){prev->random=NULL;}else{prev->random=cur->random->next;}cur=cur->next->next;}//第三步struct Node* newhead=NULL,*newtail=NULL;cur=head;while(cur){struct Node*prev=cur->next;struct Node*next=prev->next;if(newhead==NULL){newhead=newtail=prev;}else{newtail->next=prev;newtail=prev;}cur=next;}return newhead;
}

总结

  链表的相关题目到这里就结束了,当然同学们也可以去oj看看其他题:oj题
  更新不易,辛苦各位小伙伴们动动小手,👍三连走一走💕💕 ~ ~ ~ 你们真的对我很重要!最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!

专栏订阅:
每日一题
c语言学习
算法
智力题
初阶数据结构
更新不易,辛苦各位小伙伴们动动小手,👍三连走一走💕💕 ~ ~ ~ 你们真的对我很重要!最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!

在这里插入图片描述

相关内容

热门资讯

央企名录更新中国长安汽车集团入... 新京报贝壳财经讯(记者王琳琳)7月29日,国务院国资委网站中央企业名录更新,中国长安汽车集团有限公司...
A股午评:三大指数分化,沪指跌... 格隆汇7月29日|A股主要指数涨跌不一,截至午间收盘,沪指跌0.08%报3595.19点,深成指跌0...
2025年基金二季报划重点!泓... 来源:新浪基金 2025年第二季度泓德睿享一年持有期混合A基金净值增长率为3.09%,同期业绩比较基...
美团发文:绝不自营,浣熊食堂只... 来源:猎云网 7月29日,美团官方公众号发文称,经过半年多的试运营,7月初正式推出“浣熊食堂”品牌以...
独角兽疫苗企业三冲港股IPO:... 疫苗行业独角兽三冲港股IPO了! 在国产疫苗行业持续升级转型的浪潮中,一家坚持技术创新的企业正蓄势待...
A股站上新台阶,看好科技非银接... |2025年7月28日 星期一| NO.1中信建投:A股站上新台阶,看好科技非银接力 中信建投研报表...
中国长安汽车集团挂牌成立,朱华... 7月29日上午,中国长安汽车集团有限公司(以下简称“中国长安”)在重庆挂牌成立。这既是国内第三家汽车...
原创 扒... 懂车帝一场测试,成了智驾领域的“照妖镜”。测试结果触目惊心,无一车型全优通过!那些被吹上天的“遥遥领...
2025年LNG船拆解创纪录,... 2025年,LNG运输船拆解市场迎来爆发式增长,待拆解船成交量创下纪录——这凸显出在现货费率低迷的背...
中国押注电力无限的未来 文|小卢鱼 编辑|杨旭然 中国第99家央企中国雅江集团横空出世,序列号22,位于中国长江三峡集团有限...
多地消协发布上半年消费者投诉情... 7月以来,多地消协陆续发布了2025年上半年消费者投诉情况,从受理情况来看,消费欺诈、虚假宣传、预付...
7.28纯碱日评:纯碱市场交投... 纯碱市场分析 今日国内纯碱市场整体呈现稳中震荡走势,价格跌多涨少。截至目前,华北地区轻质纯碱价格在1...
国家税务总局:我国税收的调节分... 7月28日,国务院新闻办公室举行高质量完成“十四五”规划系列主题新闻发布会,介绍“十四五”时期税收改...
7.29黄金首现四连阴 交易有两个悲剧,一是万念俱灰,另一则是踌躇满志,美丽属于自信者,从容属于有备者,单边属于布局者,这本...
“吃药”行情再爆发,药ETF上... 7月29日早盘,A股“吃药”行情再爆发,制药、医疗联袂拉涨。 国内首只跟踪制药指数的药ETF(562...
上海谊众:7月28日融券卖出2... 证券之星消息,7月28日,上海谊众(688091)融资买入1424.3万元,融资偿还9642.78万...
凌晨重磅,又创新高! 【导读】标普500指数和纳斯达克指数双双创新高,英伟达市值突破4.3万亿美元 见习记者 储是 美东时...
贬值!人民币中间价单日调降48... 北京商报讯(记者 廖蒙)7月28日,中国人民银行授权中国外汇交易中心公布,当日银行间外汇市场人民币汇...
ETF盘中资讯|“吃药”行情再... 7月29日早盘,A股“吃药”行情再爆发,制药、医疗联袂拉涨。 国内首只跟踪制药指数的药ETF(562...
拓山重工连续5涨停后现&quo... 7月29日,拓山重工股价出现剧烈波动。该股以涨停价开盘,延续此前连续涨停态势。开盘后不久,股价突然出...