《剑指Offer》读书笔记--面试题16:反转链表
来源:互联网 发布:如何同意淘宝试用协议 编辑:程序博客网 时间:2024/05/29 08:10
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
链表结点定义:
struct ListNode{int m_nValue ;ListNode* m_pNext ;} ;
一开始我是先想到递归求解的:
ListNode* ReverseLinkedList(ListNode *pListHead) {if(NULL == pListHead){return NULL ;}else if(NULL == pListHead->m_pNext) //只有1个结点{return pListHead ;}ListNode *pNewHead = ReverseLinkedListCore(pListHead,NULL) ;return pNewHead ;}ListNode* ReverseLinkedListCore(ListNode *pCurNode,ListNode *pPrevNode) {if(NULL == pCurNode){return NULL ;}if(NULL == pCurNode->m_pNext) //到最后一个结点了{pCurNode->m_pNext = pPrevNode ; //开始逆转链表return pCurNode ; //最后一个结点是新的头结点}else{ListNode *pNewHead = ReverseLinkedListCore(pCurNode->m_pNext,pCurNode) ;pCurNode->m_pNext = pPrevNode ;return pNewHead ;}}
而书上的解法是非递归的,更加直接和简洁:
ListNode* ReverseList(ListNode *pHead) {ListNode *pReversedHead = NULL ;ListNode *pNode = pHead ;ListNode *pPrev = NULL ;while(pNode != NULL){ListNode *pNext = pNode->m_pNext ;if(pNext == NULL) //只有一个结点{pReversedHead = pNode ;}pNode->m_pNext = pPrev ;pPrev = pNode ;pNode = pNext ;}return pReversedHead ;}
- 《剑指Offer》读书笔记--面试题16:反转链表
- 《剑指Offer》面试题:反转链表
- [剑指offer][面试题16]反转链表
- 【剑指offer】面试题16:反转链表
- 剑指offer 面试题16 反转链表
- 剑指Offer面试题16 反转链表
- 《剑指Offer》面试题16:反转链表
- 《剑指Offer》学习笔记--面试题16:反转链表
- 剑指offer 面试题16—反转链表
- 【剑指Offer学习】【面试题16 :反转链表】
- 剑指offer面试题16-反转链表
- 剑指offer面试题16之反转链表
- 剑指offer:面试题16 反转链表
- 剑指offer-面试题16:反转链表
- 剑指offer之面试题16:反转链表
- 剑指Offer----面试题16:反转链表
- 剑指offer面试题16:反转链表
- 剑指offer--面试题16: 反转链表
- 深入了解Struts2返回JSON数据的原理及具体应用范例
- 专题5-4.野指针和内存操作分析(国嵌C语言视频)
- 解决在转化json过程中,hibernate外键的死循环问题
- android 当系统存在多个Launcher时,如何设置开机自动进入默认的Launcher?
- 第六周上机任务项目2 程序填空
- 《剑指Offer》读书笔记--面试题16:反转链表
- rest服务器的搭建
- 一、设置浏览器属性
- 用指针访问对象
- 如何理解二维数组与指针
- 第六周项目二:指针访问对象(a)
- 7PYX 网站代码下载
- 写给四年前刚开始编程的自己
- 第六周项目2——(b)