博客
关于我
王道数据结构2.2.3——8、找处两个单链表的公共结点
阅读量:634 次
发布时间:2019-03-14

本文共 877 字,大约阅读时间需要 2 分钟。

思路

在处理双链表时,如果两个链表有公共节点,这意味着它们从某个公共节点开始,后续所有节点一模一样。这种结构类似于“Y”型,因此我们可以通过以下步骤找到它们的公共节点:

  • 计算链表长度:首先,我们需要计算两个链表的长度。
  • 处理长度差异:找到较长链表和较短链表之间的长度差值,并在较长链表中移动到该差值位置。
  • 同时遍历链表:从两个链表的当前位置开始,同时遍历,直到找到第一个相同节点作为公共节点。
  • 代码

    LinkList/pubNode(LinkList L, LinkList Q) {    int lenL = 0, lenQ = 0;    LNode *p = L->next, *q = Q->next;    // 计算链表 L 的长度    while (p != null) {        p = p->next;        lenL++;    }    // 计算链表 Q 的长度    while (q != null) {        q = q->next;        lenQ++;    }    // 找到长度较长的链表    if (lenL > lenQ) {        while (lenL - lenQ-- > 0)            p = p->next;    } else if (lenQ > lenL) {        while (lenQ - lenL-- > 0)            q = q->next;    }    // 同时遍历,直到找到公共节点    while (p->data != q->data) {        p = p->next;        q = q->next;    }    return p;}

    在上面的代码中,首先遍历两个链表计算它们的长度,然后根据长度差异调整指针位置。最后,同时遍历两个链表,直到找到相同节点作为公共节点。这种方法确保了在存在公共节点的情况下,能够高效地找到它们的起始节点,从而实现对两个链表的合并。

    转载地址:http://vpaoz.baihongyu.com/

    你可能感兴趣的文章
    python 序列化操作
    查看>>
    Python 开发者,这 7 个 VS Code 插件极力推荐
    查看>>
    python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
    查看>>
    python 录音左右声道_Python分离立体声wav压缩文件的左右声道
    查看>>
    Python 循环异或对文件进行加解密
    查看>>
    Python开发环境搭建(附VMware安装包及虚拟机环境)
    查看>>
    python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
    查看>>
    Python 快速下载依赖
    查看>>
    python实现非参数统计的Cochran检验 (附完整源码)
    查看>>
    Python 手写数字识别-3-sklearn中的几种算法
    查看>>
    Python 打开文件注意事项
    查看>>
    python 批量修改文件名_python windows下批量修改文件名
    查看>>
    Python 抓取网页乱码问题 以及EXCEL乱码
    查看>>
    python 抓取网页内容
    查看>>
    python 按照当前日期创建文件
    查看>>
    Python 接口并发测试详解
    查看>>
    Python 接口自动化 —— requests框架
    查看>>
    python 接口自动化数据结构(如列表、字典、元组)
    查看>>
    Python 接口自动化测试中的深拷贝与浅拷贝~
    查看>>
    Python 接口自动化测试中的高阶函数
    查看>>