博客
关于我
王道数据结构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:从间隔映射到值
    查看>>
    Python:使用 shell=False 的子进程调用不起作用
    查看>>
    Python:修改 PATH 环境变量的平台无关方式
    查看>>
    Python:假与 0
    查看>>
    Python:函数使用
    查看>>
    Python:函数进阶
    查看>>
    Python:在整数的二进制表示中查找最长的二进制间隙
    查看>>
    Python:如何从二进制转换为 base 64 并返回?
    查看>>
    Python:如何以非阻塞方式读取子进程的标准输出
    查看>>
    Python:如何使用 plotly 制作阴影区域或交替背景颜色?
    查看>>
    Python:如何根据日期时间获取值的计数
    查看>>
    python:如何检测串行 COM 上的设备名称/ID
    查看>>
    Python:如何模拟 datetime.utcnow()?
    查看>>
    Python:如果DataFrames之间的其他值匹配,则对DataFrame中的值求和
    查看>>
    Python:字典思维
    查看>>
    Python:将 HEX 字符串转换为字节
    查看>>
    Python:将列表与范围列表合并
    查看>>
    Python:将列表列表初始化为一定大小,
    查看>>
    Python:带有生成器的给定集合的幂集
    查看>>