链表反转C++
2016-09-07 22:58
162 查看
从头到尾遍历原链表,每遍历一个结点,将其摘下放在新链表的最前端。注意链表为空和只有一个结点的情况。时间复杂度为O(n)。参考代码如下:
#include <cstdio> //链表反转 ListNode *list_invert(ListNode *phead) { if(phead == NULL) return NULL; ListNode *ptemp1 = phead->next;//你先走 ListNode *ptemp2 = phead;//我殿后 ListNode *newHead = phead; ptemp2->next = NULL; while(ptemp1 != NULL) { ptemp2 = ptemp1; ptemp1= ptemp1->next; ptemp2->next = newHead; newHead = ptemp2; } return newHead; }
相关文章推荐
- C/C++面试程序题(一)——字符串反转、链表反转的递归、非递归实现
- 简单的链表反转 C++
- 链表反转(C++版)
- C++ 第二次课堂作业(反转链表)
- 递归,迭代,堆栈三种方式实现单链表反转(C++)
- C++中经典的单向链表反转
- C++ - PAT - 1025. 反转链表 (25)
- 【C++】反转链表
- 剑指offer刷题之c++实现的反转链表
- C++课堂作业二之反转链表
- 单链表的反转 c++
- 【C/C++】反转链表
- 【C++】PAT(basic level)1025. 反转链表 (25)
- 剑指offer第十五题【反转链表】c++实现
- C++ 单链表反转
- 数据结构 - 反转单链表(C++)
- 反转链表 C++实现
- C++递归与非递归实现链表的反转
- C++单向链表反转
- 【链表】C++链表反转、链表逆序打印