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

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

3天内不再提示

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

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

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

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

wKgZomTSBjiAZV4DAAjk1nPjtWA235.jpg

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

wKgaomTSBjiAelYeAAhO_dD3txc954.jpg

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

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

wKgZomTSBjiAEwIuAAhhbbET980184.jpg

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

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

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

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

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

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

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

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







审核编辑:刘清

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

    关注

    0

    文章

    13

    浏览量

    6912
  • 数据链表
    +关注

    关注

    0

    文章

    3

    浏览量

    2453

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

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

收藏 人收藏

    评论

    相关推荐

    两个没有耦合关系的电感串联或者并联会发生什么

    ,则两个电感之间的磁场只是没有相互作用而已,各自独立,各自在自己的磁路中循环;再者,没有耦合关系的电感我们也不谈同名端和异名端的问题,因为同名端和异名端是对于两个及以上的具有耦合关系的
    的头像 发表于 03-02 15:16 1w次阅读

    如何判断链表是否

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

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

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

    multisim 如何叠加两个两个信号

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

    Linux内核的链表操作

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

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

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

    合并两个排序的链表

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

    如何测量两个光源的相对强度?

    Q: 是否可以使用仪表放大器测量两个光源之间的差异?A: 是的,用两个光敏电阻替换仪表放大器的主设定电阻就可
    的头像 发表于 02-03 12:45 5873次阅读
    如何测量<b class='flag-5'>两个</b>光源的相对强度?

    Linux USB总线的两个链表

    USB 总线引出两个首要 的链表,一为 USB 设备链表,一为 USB 驱动
    发表于 04-20 10:33 948次阅读

    移动旋转链表的每个节点

    接下来设置两个指针 former、latter 均指向链表的头节点,这两个指针的目的是去寻找出旋转之前的尾节点位置、旋转成功之后的尾节点位置。
    的头像 发表于 10-25 18:05 1100次阅读

    如何使用两个LED和Arduino

    电子发烧友网站提供《如何使用两个LED和Arduino.zip》资料免费下载
    发表于 01-30 11:28 1次下载
    如何使用<b class='flag-5'>两个</b>LED和Arduino

    两个LED和两个按钮的使用

    电子发烧友网站提供《两个LED和两个按钮的使用.zip》资料免费下载
    发表于 01-30 16:04 1次下载
    <b class='flag-5'>两个</b>LED和<b class='flag-5'>两个</b>按钮的使用

    两个相同电路的电流是否相等?

    图1(a)、(b)所示两个电路其电路结构和元件参数均相同,是完全相同的电路。那么两个图中的I是否相同?
    的头像 发表于 03-10 09:42 1402次阅读
    <b class='flag-5'>两个</b>相同电路的电流<b class='flag-5'>是否</b>相等?

    C语言入门之链表概述

    链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构,是根据需要开辟内存单元。 链表有一“头指针”变量,它存放一地址,该地址指向一
    的头像 发表于 03-24 15:04 1211次阅读

    两个网络IP地址是否在同一段中的判断方法

    我们知道IP地址是由“网络号+子网号+主机号”组成,判断两个IP地址是否在同一网段主要看“网络号”,如果网络号一样,那么他们就在同一网段
    的头像 发表于 06-02 14:31 1.3w次阅读
    <b class='flag-5'>两个</b>网络IP地址<b class='flag-5'>是否</b>在同一<b class='flag-5'>个</b>段中的<b class='flag-5'>判断</b>方法