求两个链表的相交节点(算法)
来源:互联网 发布:斯米克和马可波罗 知乎 编辑:程序博客网 时间:2024/05/16 09:06
- 遍历第一个链表
求长度M - 遍历第二个链表
求长度N - 选择M和N中较大的那个
- 将较长的链表遍历至第M-N个节点
- 然后在两个链表中同步遍历,比较next指针是否相等且不为NULL。
- 如果相等,则next指针所指的元素即为交点。
- 如果为NULL,说明两个链表都到了末端还没有相交。
代码:
- Node*
find(Node* head1,Node* head2) - {
-
Node *p1=head1,*p2=head2; -
int m=0,n=0; -
while(p1)//O(len1) -
{ -
p1=p1->next; -
m++; -
} -
while(p2)//O(len2) -
{ -
p2=p2->next; -
n++; -
} -
p1=head1; -
p2=head2; -
-
if(m>n) -
{ -
for(i=0;i -
p1=p1->next; -
} -
else -
{ -
for(i=0;i -
p2=p2->next; -
}//O(abs(len1-len2)) -
while(p1!=p2) -
{ -
p1=p1->next; -
p2=p2->next; -
}//O(min(len1,len2)) -
return p1; - }
0 0
- 求两个链表的相交节点(算法)
- 求两个相交链表的首个相交节点(转)
- 两个链表相交的节点
- 求相交链表的公共节点
- 求两个相交链表的交点
- 求两个相交链表的交点
- 求两个相交链表相交的第一个元素
- 数据结构—判断两个链表是否相交,寻找两个链表的相交节点
- 寻找两个相交链表的第一个公共节点
- 寻找两个相交链表的第一个公共节点
- 寻找两个相交链表的第一个公共节点
- 链表:找出两个链表的相交节点
- 求两个链表是否相交,若相交,求交点(链表可能带环)
- 两个链表相交,要求找出第一个相交的节点
- 判断两个链表是否相交及获得相交的第一个节点
- 两个链表相交,要求找出第一个相交的节点
- 判断两个链表是否相交,若相交,求交点。
- 判断两个链表是否相交,若相交,求交点
- 指针强制转化(很有用的小技巧)
- strcpy/strlen&&assert
- 蛋疼的浮点数
- C语言编译过程
- windows下载安装redis
- 求两个链表的相交节点(算法)
- C的几个简答题
- 堆和栈的区别(windows内存管理)
- UESTC 方老师与素数
- 统计二进制中1的个数
- 为什么C语言中bool型变量占用一个字节
- 希尔排序
- 编辑工具
- 一次jvm调优实战