0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何判断两个链表是否相交,假设两个链表都没有环?

学益得智能硬件 来源:学益得智能硬件 2023-08-08 17:08 次阅读

如何判断两个链表是否相交,假设两个链表都没有环?

首先,很多同学会存在一个误区,认为两个链表相交应该这样的。

wKgZomTSBjiAZV4DAAjk1nPjtWA235.jpg

如果把它用结点的形式来表示就这样的。

wKgaomTSBjiAelYeAAhO_dD3txc954.jpg

很显然,相交的这个结点的next指针既指向了这个这个结点,又指向了这个结点,明显不科学。

真正相交的链表,应该是这样的。

wKgZomTSBjiAEwIuAAhhbbET980184.jpg

如果两个链表相交,那么一定有重合的结点,所以可以逐个判断第一个链表里面的结点是否在第二个链表中,这种办法可行,就是效率太低,放在笔试题中往往时间复杂度满足不了。

我们稍微分析一下就会发现,相交的两个链表,他们的最后一个结点一定是重合的。

所以只要让第一个链表的指针指向最后一个结点,第二个链表的指针也指向最后一个结点,判断这两个结点是否相同,就能解决问题。

这个时候,往往面试官会接着问,如何找出相交的那个结点。

刚才的方法只适用于判断是否相交,如果想找出相交的结点,好像不太容易。

我们得换个方法,既能判断是否相交,又能找出相交的那个结点。

如果两个链表的长度一样,只要同时移动指针,最先相等的那个结点一定就是相交的结点。

所以可以先计算两个链表的长度差,然后先移动一个指针,保证长度一样后,再同时向后走。代码也没什么难度,直接附上。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单链表
    +关注

    关注

    0

    文章

    13

    浏览量

    6882
  • 数据链表
    +关注

    关注

    0

    文章

    3

    浏览量

    2430

原文标题:如何判断两个链表是否相交?

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何判断链表是否有环

    如何判断链表是否有环?
    发表于 08-10 17:07 472次阅读
    如何<b class='flag-5'>判断</b><b class='flag-5'>链表</b><b class='flag-5'>是否</b>有环

    数据结构:判断链表回文结构

    给定一个链表判断链表是否为回文结构。回文是指该字符串正序逆序完全一致。如当输入链表 {1,2,3,2,1} 时,断定是回文结构,输出Tr
    的头像 发表于 12-01 13:26 351次阅读
    数据结构:<b class='flag-5'>判断</b><b class='flag-5'>链表</b>回文结构

    multisim 如何叠加两个两个信号

    的正弦信号滤除掉),而信号发生器只能产生一信号,我该怎么办?谢谢啊,困扰我好几天了,百度了好久都没有答案,求各位大侠赐教。我的qq 79836573
    发表于 03-03 17:55

    请问如何将两个独立multisim的文件连接两个在一起仿真..

    请问如何将两个独立multisim的文件连接两个在一起,进行仿真?百度了好久,都没有答案,求大神帮助!!{:1:}
    发表于 08-13 19:26

    Linux内核的链表操作

    处理。Linux链表自己考虑的安全性主要有两个方面:a) list_empty()判断基本的list_empty()仅以头指针的next是否指向自己来
    发表于 08-29 11:13

    链表在MCU编程时的一应用

    数组在程序中的应用是很普遍的,下面说说我们MCU程序员如何应用链表这种数据结构来更好的设计程序。先描述一下我们要做的事情:主控系统中需要管理多种子设备,每个加入主控的子设备都有一编号,每种子设备都有
    发表于 11-20 09:10

    时钟向导中是否有一功能可以指导两个PLL生成没有偏斜的时钟?

    我想生成8相位时钟。所以为此,我将不得不使用两个PLL。我想确保所有生成的时钟都没有时钟偏差。时钟向导中是否有一功能可以指导
    发表于 10-11 15:01

    玩转C语言链表-链表各类操作详解

    )  head 1->next 2->next 3->next n->next  图14:有N节点的链表冒泡排序  任意两个相邻节点p、q位置互换图示:  假设p1->
    发表于 09-18 13:30

    【HarmonyOS】双向循环链表

    LOS_ListEmpty判断链表是否为空。删除节点并初始化链表LOS_ListDelInit将指定的节点从链表中删除,使用该节点初始化
    发表于 10-20 15:39

    RT-Thread内核中单链表的使用与实现

    最后一节点获取下一节点rt_inline rt_slist_t *rt_slist_next(rt_slist_t *n){ return n->next;}找到 n 的 next判断链表
    发表于 04-01 12:01

    什么是链表?怎样使用链表作为队列管理电路

    ;end2.3 释放元素链表通常用于记录操作的先后顺序,tail添加,head释放;但也有用于管理credit的场景,tail添加,也在tail释放。在链表的head释放,主要需要完成两个操作,一是释放
    发表于 08-29 14:26

    RTThread与FreeRTOS两个系统的实现差异

    调用start_up,将线程移到就绪任务列表,参与调度。二、delay两个系统都支持delay和delayutil。区别如下:freertos 系统有专用的delay超时计数链表。delay的任务按照
    发表于 09-26 18:03

    链表——求两个城市的距离

    用单链表,键盘输入城市名称和城市的坐标,可以在菜单中选择你要进行的内容
    发表于 11-26 15:45 1次下载

    合并两个排序的链表

    合并两个排序的链表一、题目要求 输入两个单调递增的链表,输出两个链表合成后的
    发表于 01-16 22:02 480次阅读

    Linux USB总线的两个链表

    一个 USB 总线引出两个首要 的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设
    发表于 04-20 10:33 828次阅读