剑指offer 两个链表的第一个公共结点
2016-04-27 10:14
393 查看
题目描述
输入两个链表,找出它们的第一个公共结点。
输入两个链表,找出它们的第一个公共结点。
/** * 遍历两个链表得到它们的长度 * 第二次遍历,在较长的链表上先走若干步,接着同时在两个链表上遍历 * @param pHead1 * @param pHead2 * @return */ public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { int len1 = getListLength(pHead1); int len2 = getListLength(pHead2); int len = len1 - len2; ListNode pHeadLong = pHead1; ListNode pHeadShort = pHead2; if (len2 > len1) { pHeadLong = pHead2; pHeadShort = pHead1; len = len2 - len1; } for (int i = 0; i < len; i++) { pHeadLong = pHeadLong.next; } while (pHeadLong != null && pHeadShort != null) { if (pHeadLong == pHeadShort) { break; } pHeadLong = pHeadLong.next; pHeadShort = pHeadShort.next; } return pHeadLong; } public int getListLength(ListNode head) { int len = 0; ListNode ptr = head; while (ptr != null) { ++len; ptr = ptr.next; } return len; }
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- PHP中模拟链表和链表的基本操作示例
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)
- C语言实现输出链表中倒数第k个节点