如果两个单向链表相交,一定是形成Y字形,而不会是X字形。基于这个想法,可以判断两链表是否相交。

代码

NODE* FindNode(NODE* pHead1, NODE* pHead2)
{
    NODE* p1 = pHead1;
    NODE* p2 = pHead2;
    int i = 1, j = 1, k = 0, f = 0;

if(pHead2 == NULL || pHead2 == NULL)
    {
        return NULL;
    }

while(p1->next != NULL)
    {
        p1 = p1->next;
        i++;
    }

while(p2->next != NULL)
    {
        p2 = p2->next;
        j++;
    }

if(p1 != p2)
    {
        return NULL;        //如果尾节点不同,直接返回NULL
    }
    else                   //否则寻找第一个相同的节点
    {
        p1 = pHead1;                // 1
        p2 = pHead2;                // 2

f = fabs(i, j);   //计算两条链表长度的差
        if(i > j)         //如果第一个链表比第二个长,第一个链表先向前移动f步
        {
            for(k=0; k<f; k++)
            {
                p1 = p1->next;
            }
            while(p1 != p2)
            {
                p1 = p1->next;
                p2 = p2->next;
            }
            return p1;
        }
        else
        {
            for(k=0; k<f; k++)
            {
                p2 = p2->next;
            }
            while(p1 != p2)
            {
                p1 = p1->next;
                p2 = p2->next;
            }
            return p1;
        }
    }
}

转载于:https://www.cnblogs.com/songQQ/archive/2009/12/01/1614661.html

如何判断两个单向链表是否有相交,并找出交点相关推荐

  1. 【链表】如何判断两个单向链表是否有相交,并找出交点

    判断两个链表是否相交:(假设两个链表都没有环) 1.判断第一个链表的每个节点是否在第二个链表中 2.把第二个链表连接到第一个后面,判断得到的链表是否有环,有环则相交 3.先遍历第一个链表,记住最后一个 ...

  2. 判断两个单向链表是否相交

    链接:http://www.cnblogs.com/mengdd/archive/2013/03/14/2958642.html 题目来源 <编程之美>3.6节. 给出两个单向链表的头指针 ...

  3. 判断链表是否相交并找出交点

    问题概述 单链表定义如下: public class ListNode {int val;ListNode next;ListNode(int x) {val = x;next = null;}} 编 ...

  4. neo4j 查询同一节点的两个上级_链表的魅力:两个单向链表的第一个交点

    最近听了左神的算法课,对一些常用数据结构以及算法改进的思路有了更深的理解,特此总结,不定期更新算法题目以及答案总结!笔者使用C++进行算法重现!虽然左神使用的是JAVA,但他自己也说了,算法与语言无关 ...

  5. 7_2判断两个单链表是否相交,若相交,求出第一个交点

    转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4251372.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...

  6. c++如何判断两个字符串是否相同?_链表 | 如何判断两个单链表(无环)是否交叉...

    如何判断两个单链表(无环)是否交叉 单链表相交指的是两个链表存在完全重合的部分,如下图所示 在上图中,这两个链表相交于结点5,要求判断两个链表是否相交,如果相交,找出相交处的结点. 分析 Hash法 ...

  7. 判断两个单链表是否相交及找到第一个交点

    题目:给两个单链表,如何判断两个单链表是否相交?若相交,则找出第一个相交的节点.  这道题的思路和解法有很多,在这把这道题的解法做一个详细的总结. 解这道题之前,我们需要首先明确一个概念:  如果两个 ...

  8. 笔试算法题(28):删除乱序链表中的重复项 找出已经排好序的两个数组中的相同项...

    出题:给定一个乱序链表,节点值为ASCII字符,但是其中有重复项,要求去除重复项并保证不改变剩余项的原有顺序: 分析:创建一个256(2^8)大小的bool数组,初始化为false,顺序读取链表,将字 ...

  9. 美团点评_给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。

    给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度. import java.util.*; public class Meituan_4 {public static void ...

最新文章

  1. javascript迭代_探索JavaScript迭代
  2. R语言——linux离线安装R包
  3. VTK:几何对象之PolyLine
  4. ACL 2019 | 图表示解决长文本关系匹配问题:腾讯提出概念交互图算法
  5. c语言随机数循环延迟,C语言生成随机数的函数、延时函数
  6. RT-Thread设备框架学习感悟
  7. cuda 核函数 for循环_【CUDA 基础】4.4 核函数可达到的带宽
  8. 使用maven给jar包生成对应的pom文件
  9. flutter 判断是不是调试模式_Flutter之撸一个漂亮的登录界面的总结
  10. JavaScript函数,思维导图
  11. Linux7(CentOs7.5)安装ssh、和修改ssh端口号
  12. ABB伺服驱动调试(四)
  13. word论文排版,页码和页眉
  14. 机器学习,分类算法(饭店评价的例子)
  15. 我希望进入大学时就能知道的一些事儿
  16. win10应用商店无法打开重新 加载
  17. java扫雷初级代码_运行在Eclipse环境下的java扫雷游戏的初级代码是什么?
  18. Dos命令 netstat -ano 查看端口占用及关闭进程
  19. LTE物理信道PHICH--学习笔记
  20. 程序员需知的11个在线教程网站,建议收藏!

热门文章

  1. 引起SQL数据库超时的问题分析及解决办法
  2. 《重构,改善既有代码的设计》读书笔记
  3. 苹果宣布创立欧洲首个iOS开发中心
  4. callable object与新增的function相关 C++11中万能的可调用类型声明std::function...
  5. JFreeChart的简单图表的制作------柱形图
  6. 穿透Session 0 隔离(一)
  7. 为什么static成员一定要在类外初始化?
  8. 《Algorithm算法》笔记:元素排序(2)——希尔排序
  9. ajax方法完整的事件流
  10. 重构alert,confirm