如何判断两条链表是否相交
来源:互联网 发布:阿里云机顶盒破解 编辑:程序博客网 时间:2024/05/16 19:04
链表如果有交点,就代表链表L1某个p1节点和链表L2某个p2节点相同。所以不管如何,最后交汇一起呈Y型或者V型。
1.那么判断是否有交点也很简单,可以定义一个数组存放各一个链表每个节点的地址,再遍历另一条链表,看是否存在节点地址和数组中的元素相同。如果相同就有交点,代码如下;
Node* fx(Node *p1,Node *p2)
{
Node * arr[20];
int i=0;
for(;p1!=NULL;p1=p1->next)
{
arr[i]=p1;
i++;
}
for(;p2!=NULL;p2=p2->next)
{
for(int j=0;j<=i;j++)
{
if(p2==arr[j])
{return p2;}
}
}
return NULL;
}
为了偷懒随意定义了一个长度为20的数组,如果要实用化可以改为可扩容数组;
2.还有一种方法就是不论是v型还是Y型相交,都可以看得出,如果相交的话,两个链表的最后一个节点应该是一样的。因此可以2条链表同时遍历,然后存储下最后一个节点的地址,比较两个地址是否相等就能判断是否相交了。
3.最后一种方法,让第一条链表先遍历到最后,第一条链表最后的节点的next应该为null吧,把它指向第二条链表的头结点,这样就把问题转化为第二条链表是否有环了,如果有环,则代表有交点,无环则无交点。
阅读全文
0 0
- 如何判断两条链表是否相交
- 如何判断两矩形是否相交
- 如何判断两个矩形是否相交
- 如何判断两个矩形是否相交
- uva10256如何判断俩个凸包是否相交
- Revit如何判断两个Element是否相交
- 数据结构 - 如何判断两个无环单链表是否相交;如果相交,给出相交的第一个结点
- 判断两个链表是否相交,如果相交如何找到第一个相交结点。
- 判断俩个链表是否相交
- 判断俩链表是否相交
- 判断俩个链表是否相交
- 判断俩链表是否相交
- 判断矩形是否相交
- 判断俩个链表是否相交
- 判断两条单链表是否相交
- 判断这俩个链表是否相交
- 判断两链表是否相交
- 判断俩个链表是否相交
- HDU 6200 边双联通分量 + 并查集 + dfs序 + BIT
- A.Quasi-palindrome
- Android Studio 3.0.0 初试
- 关于使用python ~取反操作
- Apache Geode 快速入门(15分钟
- 如何判断两条链表是否相交
- 网络自动断开和连接
- Qt————学习记录(二)
- Java内存区域与内存溢出异常小结
- android6.0第三方APP获得设备节点的访问权限
- 理解继承(一):JS面向对象编程(封装)
- D.Yet Another Array queries Problem
- Codeforces Round #438 by Sberbank and Barcelona Bootcamp (Div. 1 + Div. 2 combined)
- 小白教程——Windows下用PHP写一个简单的登录注册页面(一)