37.两个链表的第一个公共结点

原创 2015年07月10日 16:36:02

题目:输入两个链表,找出它们的第一个公共结点,链表结点定义如下:

struct  ListNode

{

         int m_nKey;

         ListNode*  m_pNext;

};



ListNode* FindFirstComonNode(ListNode* pHead1, ListNode* pHead2)
{
//得到两个链表的长度
unsigned int nLength1 = GetListLength(pHead1);
unsigned int nLength2 = GetListLength(pHead2);
int nLengthDif = nLength1 - nLength2;
ListNode* pListHeadLong = pHead1;
ListNode* pListHeadShort = pHead2;
if (nLength2 > nLength1)
{
pListHeadLong = pHead2;
pListHeadShort = pHead1;
nLengthDif = nLength1 - nLength2;
}
//先在长链表上走几步,再同时在两个链表上遍历
for (int i = 0; i < nLengthDif; ++i)
pListHeadLong = pListHeadLong->m_pNext;
while ((pListHeadLong != NULL) && (pListHeadShort != NULL) && (pListHeadLong!=pListHeadShort)
{
pListHeadLong = pListHeadLong->m_pNext;
pListHeadShort = pListHeadShort->m_pNext;
}
//得到第一个公共结点
ListNode* pFirstCommonNode = pListHeadLong;
return pFirstCommonNode;
}
unsigned  int GetListLength(ListNode* pHead)
{
unsigned int nLength = 0;
ListNode* pNode = pHead;
while (pNode != NULL)
{
++nLength;
pNode = pNode->m_pNext;
}
return nLength;
}




题目:输入两个链表,找出它们的第一个公共结点

题目:输入两个链表,找出它们的第一个公共结点。链表的定义如下: struct ListNode {      int m_nValue;      ListNode* m_pNext; };...
  • yanxiaolx
  • yanxiaolx
  • 2016年08月05日 20:59
  • 2291

两个单向链表,找出它们的第一个公共结点。

题目:两个单向链表,找出它们的第一个公共结点。 链表的结点定义为: struct ListNode {       int       m_nKey;       Lis...
  • u013322907
  • u013322907
  • 2014年08月01日 17:02
  • 882

剑指Offer面试题37(Java版):两个链表的第一个公共结点

题目:输入两个链表,找出它们的第一个公共结点。 面试的时候碰到这道题,很多应聘者的第一反应就是蛮力法:在第一链表上顺序遍历每个结点,没遍历到一个结点的时候,在第二个链表上顺序遍历每个结点。如果在第二个...
  • jsqfengbao
  • jsqfengbao
  • 2015年08月09日 21:40
  • 1298

面试题37. 两个链表的第一个公共结点

题目描述 输入两个链表,找出它们的第一个公共结点。思路: 1. 首先遍历两个链表,分别求出链表的长度,下图中链表长度分别为6和4。 2. 然后p在长链表上走2步(到p’) 3. 随后p’、q从...
  • u010429424
  • u010429424
  • 2017年06月12日 20:42
  • 114

两个链表的第一个公共结点

题目描述: 输入两个链表,找出它们的第一个公共结点。 方法一:分别把两个链表的结点放入两个栈中,这样两个链表的尾结点就位于两个栈的栈顶,接下来比较两个栈顶的结点是否相同。如果相同,则把栈顶弹出...
  • zh_ang_lei
  • zh_ang_lei
  • 2016年03月16日 10:10
  • 177

两个链表中的第一个公共结点

题目 输入两个链表,找出他们的第一个公共节点。下面第一个公共节点便是40。       1->2->3-----\                             >40->50 10...
  • u014307117
  • u014307117
  • 2015年08月18日 10:17
  • 969

两个链表的第一个公共结点

两个链表的第一个公共结点 问题:输入两个链表,找出它们的第一个公共结点。 方法一 思路:常规想法:找出2个链表的长度,然后让长的先走两个链表的长度差,然后再一起走(因为2个链表用公共的尾部)这...
  • hyqsong
  • hyqsong
  • 2015年11月02日 08:44
  • 329

两个链表的第一个公共结点

输入两个链表,找出它们的第一个公共结点。
  • weixin_35683275
  • weixin_35683275
  • 2016年09月03日 22:13
  • 92

两个链表的第一个公共结点

题目描述 输入两个链表,找出它们的第一个公共结点。题目解析 如果两个链表有公共结点,那么两个链表公共结点之后的结点也都相同,那么两个链表交叉后一定是一个Y型,所以如果我们将两个链表放到两个栈里边,...
  • qq_27035123
  • qq_27035123
  • 2017年02月15日 20:58
  • 96

两个链表的第一个公共结点

题目:输入两个链表,找出他们的第一个公共结点。方法1:分别把两个链表的节点放入两个栈里,这样两个链表的尾结点就位于两个栈的栈顶,接下来比较两个栈顶的结点是否相同。如果相同,则把栈顶弹出接着比较下一个栈...
  • sunflower_Yolanda
  • sunflower_Yolanda
  • 2015年10月07日 16:53
  • 334
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:37.两个链表的第一个公共结点
举报原因:
原因补充:

(最多只允许输入30个字)