链表相交
2016-06-25 01:42
281 查看
判断两个链表是否相交???
我们先来分析一下两个链表的相交问题,如图:
两条链表都不带环:
一条链表带环,一条不带环:
两条链表都带环:
我们先来分析一下两个链表的相交问题,如图:
两条链表都不带环:
一条链表带环,一条不带环:
两条链表都带环:
//如果两个链表都不带环 int NotCycleCheckCross(pLinkNode head1,pLinkNode head2) { pLinkNode list1 = head1->next; pLinkNode list2 = head2->next; if ((NULL==list1 )||(NULL==list2)) { return 0; //不相交 } while (NULL != list1->next) { list1 = list1->next; } while (NULL != list2->next) { list2 = list2->next; } if (list1==list2) { return 1; //相交 } return 0; //不相交 } //链表带环,判断两个链表是否相交 int CycleCheckCross(pLinkNode meet1, pLinkNode meet2) { pLinkNode cur = meet1->next; if (meet1 == meet2) { return 1; //链表相交 } while ((cur != meet1)&&(cur!=meet2)) { cur = cur->next; } if (cur == meet2) { return 1; //链表相交 } return 0; //不相交 } //将上面两个函数封装成一个函数 int CheckCross(pLinkNode head1, pLinkNode head2) //参数为两个头结点 { pLinkNode fast = NULL; pLinkNode slow = NULL; pLinkNode meet1 = NULL; pLinkNode meet2 = NULL; if (head1->next == NULL || head2->next == NULL) { return 0; //至少一个链表为空链表,则两个链表一定不相交 } fast = head1->next; slow = head1->next; while (fast&&fast->next) //判断链表head1是否带环 { fast = fast->next->next; slow = slow->next; if (fast == slow) { meet1 = fast; break; } } fast = head2->next; slow = head2->next; while (fast&&fast->next) //判断链表head2是否带环 { fast = fast->next->next; slow = slow->next; if (fast == slow) { meet2 = fast; break; } } if ((meet1 == NULL) && (meet2 == NULL)) //如果两个链表都不带环 { return NotCycleCheckCross(head1, head2); } else if (meet1&&meet2) //如果两个链表都带环 { return CycleCheckCross(meet1, meet2); } //如果两个链表一个带环一个不带环,则一定不相交直接返回0 return 0; //不相交 }
相关文章推荐
- java 中的 各种变量、代码块执行时机
- 64位VS2012+64位matlab R2010b和32位VS2012+32位matlab R2010b 使用matlab engine实现混合编程配置
- 占满整个屏幕,且实现缩放动画
- How to add event listener to div
- Scala "Hello,world!" 程序
- MySQL子查询(subquery)分类
- 学期总结
- 关于创建一个对象的流程以及代码块和属性位置相关
- 34. 后台模块开发(1)
- 站在互联网上,看宋江如何在创业公司当老大
- form表单那点事儿(上) 基础篇
- maven配置plugin报错vc-complex-type.2.4.a: Invalid content was found starting with element 'plugins'
- node入门
- 算法学习笔记(一)——算法概述
- Oracle进程管理常用查询语句
- 理解devfs、sysfs、udev
- sublime个性化设置
- linux内核sysfs详解
- [Webpack 2] Import a non-ES6 module with Webpack
- hadoop安装后测试运行