找出链表的第一个公共结点
来源:互联网 发布:特效视频软件app 编辑:程序博客网 时间:2024/06/13 21:18
两个单向链表,找出它们的第一个公共结点。
思想:采用先后指针
unsigned int GetListLength(ListNode* pHead);
ListNode* FindFirstCommonNode(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 = nLength2 - nLength1;
}
// 先在长链表上走几步,再同时在两个链表上遍历
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* pFisrtCommonNode = pListHeadLong;
return pFisrtCommonNode;
}
unsigned int GetListLength(ListNode* pHead) {
unsigned int nLength = 0;
ListNode* pNode = pHead;
while (pNode != NULL) {
++nLength;
pNode = pNode->m_pNext;
}
return nLength;
}
- 找出两个链表的第一个公共结点--总结
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出链表的第一个公共结点(链表)。
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 62 找出链表的第一个公共结点
- 找出链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出两个链表中的第一个公共结点
- 程序员面试题精选(56):找出两个链表的第一个公共结点
- 两个单向链表,找出它们的第一个公共结点
- 程序员面试题精选100题(35)-找出两个链表的第一个公共结点
- 两个单向链表,找出它们的第一个公共结点
- HTTP与HTTPS的区别
- kubernetes使用cephRBD作为存储卷
- 微信小程序学习之路04-简易的计算器
- mybatis实战教程
- TBB、OpenCV混合编程
- 找出链表的第一个公共结点
- 小七的Javascript 1月12日
- Java的异常体系
- Hrbust 1846 方格涂色【dp+递推思维】好题!好题!好题!
- C语言不定参数实例详解
- 八大排序算法
- springboot + retrofit(平台间接口调用)
- 电脑硬件基础知识以及如何配置一台电脑-显卡篇
- k-means聚类