判断两个链表是否相交

问题:判断两个链表是否相交
(1)两链表均不带环
(2)两链表有一带环
(3)两链表均带环

 

-------------------------------

5.26添加:

1.,两链表均不带环,若两链表相交,则必有相同的元素,且相交后的所有元素都相同,因此可以直接判断两链表的最后一个元素是否相等,若相等就相交(此方法应该效率最高)。若要求两链表相交处的元素,此方法的时间复杂组度为O(M+N).

5.28添加:

若求两链表相交的第一个元素,如果确定两链表相交,设M>N,m,n为两链表的元素个数,则先将元素个数为M的链表向右移动M-N个元素,然后同时遍历两链表,如果M[I] = N[i],则i为第一个相交的元素。

5.30添加

(2)两链表有一带环

   求是否相交,确定哪个是环链表,之后遍历至非环链表最后一个元素,查找环链表中是否有此元素。

   求第一个相交的元素,将环链表从与第一个链表最后一节点相等的地方截开,之后按照 两个链表均不带环 的方法来处理。

(3)两链表均带环

    两链表均带环情况下,如果相交,则链表的环路节点都相等,即两链表的环路节点相同且个数相同。将较长的链表前面M-N个元素截掉,之后两链表同步遍历,遍历N个后停止,若之间出现相同的节点,则相交且为第一个相交的节点。

   若不知道两链表长度,则先找两链表中的环路,任选一在另外一个环路链表查找,找到即为相交。此种方法没有考虑效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值