每日一题(8) - 求链表的中间结点
来源:互联网 发布:北京租房软件 编辑:程序博客网 时间:2024/06/03 16:52
题目来自剑指Offer
题目
分析
代码
ListNode* FindMidNode(ListNode* pHead){assert(pHead != NULL);ListNode* pFast = pHead;ListNode* pSlow = pHead;while (pFast->m_pNext && pFast->m_pNext->m_pNext){pFast = pFast->m_pNext->m_pNext;pSlow = pSlow->m_pNext;}return pSlow;}
测试代码
#include <iostream>#include <assert.h>using namespace std;struct ListNode{int m_Data;ListNode* m_pNext;};ListNode* FindMidNode(ListNode* pHead){assert(pHead != NULL);ListNode* pFast = pHead;ListNode* pSlow = pHead;while (pFast->m_pNext && pFast->m_pNext->m_pNext){pFast = pFast->m_pNext->m_pNext;pSlow = pSlow->m_pNext;}return pSlow;}void CreateList(ListNode** pHead,int nLen)//头指针使用指针的指针{assert(*pHead == NULL && nLen > 0);ListNode* pCur = NULL;ListNode* pNewNode = NULL;for (int i = 0;i < nLen;i++){pNewNode = new ListNode;cin>>pNewNode->m_Data;pNewNode->m_pNext = NULL;if (*pHead == NULL){*pHead = pNewNode;pCur = *pHead;}else{pCur->m_pNext = pNewNode;pCur = pNewNode;}}}void PrintList(ListNode* pCurNode){assert(pCurNode != NULL); while (pCurNode) { cout<<pCurNode->m_Data<<" "; pCurNode = pCurNode->m_pNext; } cout<<endl;}int main(){int nLen = 0;ListNode* pHead = NULL;ListNode* pMidNode = NULL;cout<<"please input node num: ";cin >> nLen;CreateList(&pHead,nLen);//注意传参使用引用PrintList(pHead);pMidNode = FindMidNode(pHead);cout<<"MidNode: "<<pMidNode->m_Data<<endl;system("pause");return 1;}
- 每日一题(8) - 求链表的中间结点
- 求链表的中间结点
- 求链表的中间结点
- 每日一题(11) - 统计有环单链表的环中结点个数
- [算法学习]求链表的中间结点
- 单链表的中间结点
- 求链表中间结点
- 剑指-求链表中间结点
- 每日一题(71) - 树中两个结点的最低公共祖先
- 每日一题--两个链表的第一个公共结点
- 每日一题(6) - 链表中倒数第 k 个结点
- 链表的中间结点
- 寻找单链表的中间结点
- 剑指offer相关题目:求链表的中间结点
- 每日一题(14)—— 交换a,b的值(不使用中间变量)
- 剑指offer(15)----求链表中的倒数第k个结点(扩展求链表的中间结点)
- 数据结构 - 返回单链表的中间结点
- 如何寻找单链表的中间结点?
- Android intent
- 高手分享:巧设提高U盘数据传输速度——系统收藏
- 福州大学第十届校赛 & fzu 2127养鸡场
- Android MediaPlayer的生命周期
- 经典的20道AJAX面试题
- 每日一题(8) - 求链表的中间结点
- 嵌入式开发知识体系
- 菜鸟收藏:什么是.rar文件?如何打开rar文件?_下载加速吧
- Launcher2主菜单应用图标显示于整体布局中之说明
- 性能分析添加数据源绑定
- 如何看懂bmp图像的内存存储格式
- 编程一年有感
- HDU 1559 最大子矩阵
- 关于ios应用本地化