博客
关于我
王道数据结构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/

    你可能感兴趣的文章
    php20个主流框架
    查看>>
    php301到https,虚拟主机设置自动301跳转到HTTPS
    查看>>
    php5 apache 配置
    查看>>
    php5 升级 php7 版本遇到的问题处理方法总结
    查看>>
    PHP5.3.3安装Mcrypt扩展
    查看>>
    PHP5.4 + IIS + Win2008 R2 配置
    查看>>
    Redis从入门到精通
    查看>>
    PHP5.6.x编译报错:Don't know how to define struct flock on this system, set --enable-opcache=no
    查看>>
    php5ts.dll 下载_php5ts.dll下载
    查看>>
    php7
    查看>>
    PHP7 新特性
    查看>>
    PHP7+MySQL5.7+Nginx1.9. on Ubuntu 14.0
    查看>>
    php7.1.6 + redis
    查看>>
    php7中使用php_memcache扩展
    查看>>
    PHP7中十个需要避免的坑
    查看>>
    php7和PHP5对比的新特性和性能优化
    查看>>
    PHP7安装pdo_mysql扩展
    查看>>
    PHP7实战开发简单CMS内容管理系统(7) 后台登录架构 用户登录校验
    查看>>
    php7,从phpExcel升级到PhpSpreadsheet
    查看>>
    PHP8.1 + ThinkPHP实战指南:高效构建现代化网站的六大技巧
    查看>>