单链表之编程判断两个链表是否相交
2015-10-19 13:09
176 查看
编程判断两个链表是否相交:
如果两个链表相交,那么他们一定有着相同的尾节点,因此实现思路为:分别遍历两个链表,记录它们的尾节点,
如果他们的尾节点相同,那么两个链表相交,否则不相交。
如果两个链表相交,那么他们一定有着相同的尾节点,因此实现思路为:分别遍历两个链表,记录它们的尾节点,
如果他们的尾节点相同,那么两个链表相交,否则不相交。
/** * 如果两个链表相交于某一节点,那么在这个相交节点之后的所有节点都是两个链表所共有的。 也就是说,如果两个链表相交,那么最后一个节点肯定是共有的。 * 先遍历第一个链表,记住最后一个节点,然后遍历第二个链表, 到最后一个节点时和第一个链表的最后一个节点做比较,如果相同,则相交, * 否则不相交。时间复杂度为O(len1+len2),因为只需要一个额外指针保存最后一个节点地址, 空间复杂度为O(1) */ public static boolean isIntersect(Node head1, Node head2) { if (head1 == null || head2 == null) { return false; } Node tail1 = head1; // 找到链表1的最后一个节点 while (tail1.next != null) { // 如果不是尾结点,指针一直后移,直到尾节点 tail1 = tail1.next; } Node tail2 = head2; // 找到链表2的最后一个节点 while (tail2.next != null) { tail2 = tail2.next; } return tail1 == tail2; }
相关文章推荐
- C++第八课 局部变量和全局变量
- Mybatis系列之实战篇(上)
- django 画图
- (2015秋) 作业6:(电梯系统之结对编程 I 总分=2*50 分)
- AutoIt脚本的反编译和代码格式化问题分析
- 让Category支持添加属性与成员变量【转载】
- java--基于UDP的多线程通信
- java中间==、equals和hashCode差额
- Spring的事务到底该给Dao配置还是给Service配置?
- JDBC编程实现文件、图片的存储方法
- JAVA调用易信接口向指定好友推送消息(二)POST测试
- C语言值传递,C语言地址传递
- JavaSE知识点个人总结
- delphi 获取可执行文件的当前路径
- 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台
- C++STL之list双向链表容器
- Codeforces 574 A. Bear and Elections
- 日报2015/10/19(第一行代码读书笔记)
- ubuntu 14.04 安装java8
- 【C++】枚举量注意