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

    你可能感兴趣的文章
    OpenCV学堂 | OpenCV案例 | 基于轮廓分析对象提取
    查看>>
    OpenCV学堂 | YOLOv8与YOLO11自定义数据集迁移学习效果对比
    查看>>
    OpenCV学堂 | YOLOv8官方团队宣布YOLOv11 发布了
    查看>>
    OpenCV学堂 | YOLOv8实战 | 荧光显微镜细胞图像检测
    查看>>
    OpenCV学堂 | 汇总 | 深度学习图像去模糊技术与模型
    查看>>
    OpenCV安装
    查看>>
    OpenCV官方文档 理解k - means聚类
    查看>>
    opencv实现多路播放
    查看>>
    opencv常用函数
    查看>>
    OpenCV探索
    查看>>
    OpenCV添加中文(五)
    查看>>
    opencv源码查看
    查看>>
    OpenCV点目标检测未找到所有目标,并且找到的圆圈偏移
    查看>>
    opencv特征提取1-Harris角点检测
    查看>>
    OpenCV环境搭建(一)
    查看>>
    OpenCV的视频读取
    查看>>
    openCV目标识别 目标跟踪 YOLO5深度学习 Python 计算机视觉 计算机毕业设计 源码下载
    查看>>
    opencv笔记(1):图像缩放
    查看>>
    opencv笔记(二十四)——得到轮廓之后找到凸包convex hull
    查看>>
    OpenCV计算点到直线的距离 数学法
    查看>>