一:单链表——④判断两个单链表是否相交

这篇博客探讨了如何高效地判断两个单链表是否相交,通过分析相交的三种情况,提出了一种优化策略。具体方法是,计算长链表与短链表的长度差,然后让长链表向前移动这个长度差,再对比两个链表的节点。通过这种方式,可以避免使用低效的二重循环穷举法。
摘要由CSDN通过智能技术生成

题目:输入两个链表的头节点,判断这两个链表是否存在相交

链表的定义如下:

typedef int Elemtype;
typedef struct ListNode
{
   Elemtype data;//值域
   ListNode *m_pNext;//指针域
}ListNode,*PListNode;

看到这个题目后大多数的人的第一反应应该就是,判断这两个链表的任意一个节点的指针是否相同,如果有那么这两个链表相交,否则不想交,然后呢用二重for循环来一一查找。显然这是一种笨方法,时间效率极其低下,那么我们来分析如何能够优化该解决方案呢?

首先我们先来分析,两个链表相交能出现哪些情况呢?

第一种:

在第n个节点开始这两条链表的后续重叠。好像两个相爱的人,在相遇了之后,便永不分离。

第二种:

这种相交情况在现实中虽然存在,但是呢,在链表目前的状态下,是无法实现的,因为每一个m_pNext指针只能指向下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值