链表倒序算法
来源:互联网 发布:人工智能的未来趋势 编辑:程序博客网 时间:2024/05/22 13:31
问题描述:
给定一个链表,将其倒序排列,例如输入1->2->3->4,输出4->3->2->1。链表结点的定义如下,
struct ListNode { int val; ListNode *next; ListNode(int x): val(x), next(NULL) {}};
问题分析:
链表倒序的高效算法时间复杂度为O(n),空间复杂度为O(1)。其基本思想是将后面的结点一个个移动到前方,例如对输入 1->2->3->4 的处理步骤是 (1) 2->1->3->4 (2) 3->2->1->4 (3) 4->3->2->1
C++ 代码:
// 对(prev, next)之间的元素进行倒序排列,双开区间ListNode *reverseList(ListNode *prev, ListNode *next) { ListNode *last = prev->next; ListNode *cur = last->next; while(cur != next) { last->next = cur->next; cur->next = prev->next; prev->next = cur; cur = last->next; } return prev->next;}// 对整个链表进行倒序排列ListNode *reverseList(ListNode *head) { if (head == NULL) return head; ListNode dummy(0); dummy.next = head; return reverseList(&dummy, NULL);}
0 0
- 链表倒序算法
- 链表倒序算法
- 链表的倒序算法
- 链表倒序输出三种算法
- 算法--倒序打印链表--java
- 链表倒序输出三种算法
- C++经典算法————链表倒序
- C++算法之 倒序输出一个链表
- 倒序算法
- 单向链表倒序
- C链表倒序
- 链表的倒序
- 链表倒序
- 链表倒序
- 倒序输出链表
- 倒序输出链表
- 关于链表倒序
- 倒序输出链表
- Jrtplib3.9.1交叉编译
- topcoder srm609 div1
- 一口一个设计模式--职责链模式
- setuptools
- wifi共享精灵 设置热点后 电脑上不了网
- 链表倒序算法
- android笔记27- 风格style 使用
- C++对象
- C/C++内存分配知识
- 木棒三角形-枚举
- linux下xargs基本用法
- 黑马程序员—16—java基础:有关map结合的学习笔记和心得体会
- shell学习总结之变量引用
- vim tab设置为4个空格