单链表递归反转和非递归翻转
来源:互联网 发布:win7开机优化加速 编辑:程序博客网 时间:2024/05/29 17:37
今晚抽时间复习了链表,整理了递归版本和非递归版本的单链表翻转,欢迎指出错误。
1、递归版本
调用:
ListNode * head = NULL;reverseRec(root, head);//head即为反转后得链表头实现如下:
void reverseRec(ListNode *root, ListNode *&head){ if (root == NULL) return; if (root->next == NULL){ head = root; return; } reverseRec(root->next, head); root->next->next = root; root->next = NULL;}
2、非递归版本
调用:
ListNode *head = reverse(root);//head即为翻转后的链表头
实现如下:
ListNode* reverse(ListNode *root){ if (root == NULL || root->next == NULL) return root; ListNode *cur = root; ListNode *reverseHead = NULL; ListNode *pre = NULL; while (cur != NULL) { ListNode *tmp = cur->next; if(tmp == NULL){ reverseHead = cur; } cur->next = pre; pre = cur; cur = tmp; } return reverseHead;}
0 0
- 单链表递归反转和非递归翻转
- 单链表反转(递归和非递归)
- 单链表反转(递归和非递归)
- 单链表反转(递归和非递归)
- 单链表反转(递归和非递归)
- 【面试题】单链表反转-递归和非递归
- 使用单链表反转的递归和非递归实现方式
- 反转二叉树--递归和非递归
- 单链表翻转(递归与非递归)
- 反转单链表 递归与非递归
- 单链表反转:递归与非递归实现
- 单链表反转(非递归)
- 链表翻转的递归和非递归算法
- 链表翻转的递归和非递归实现
- 使用递归和非递归方式反转单向链表
- 反转链表(递归和非递归实现)
- 递归和非递归实现链表反转
- 边看边写(链表反转(递归和非递归))
- New Document
- 关于二维数组当做函数参数的问题
- C++ STL中next_permutation的实现
- MySQL临时表
- 发布webapi 404错误
- 单链表递归反转和非递归翻转
- C语言实现控制行数打印星号金字塔
- java中返回值return的使用
- from now on...
- 深刻的理解Fragment生命周期 都在做什么
- C++本质:类的赋值运算符=的重载,以及深拷贝和浅拷贝
- 【华为OJ19】简单错误记录
- BZOJ 1935
- mysql 自定义hash索引