博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——面试题37:两个链表的第一个公共节点
阅读量:4088 次
发布时间:2019-05-25

本文共 1078 字,大约阅读时间需要 3 分钟。

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;}

你可能感兴趣的文章
SQL join
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>
JavaScript:时间日期格式验证大全
查看>>
pinyin4j:拼音与汉字的转换实例
查看>>
XML工具代码:SAX从String字符串XML内获取指定节点或属性的值
查看>>
时间日期:获取两个日期相差几天
查看>>
责任链模式 Chain of Responsibility
查看>>
高并发与大数据解决方案概述
查看>>
解决SimpleDateFormat线程安全问题NumberFormatException: multiple points
查看>>
MySQL数据库存储引擎简介
查看>>
处理Maven本地仓库.lastUpdated文件
查看>>
Kafka | 请求是怎么被处理的?
查看>>
Java并发编程1-线程池
查看>>
CentOS7,玩转samba服务,基于身份验证的共享
查看>>
计算机网络-网络协议模型
查看>>
计算机网络-OSI各层概述
查看>>