LeetCode206:Reverse Linked List
2016-04-29 16:13
232 查看
Reverse a singly linked list.
分别用迭代和递归实现
struct ListNode { int val; struct ListNode *next; };
迭代实现:
struct ListNode* reverseList(struct ListNode* head) { struct ListNode *pre = NULL; struct ListNode *cur = head; while( cur != NULL ) { struct ListNode *after = cur->next; cur->next = pre; pre = cur; cur = after; } return pre; }
递归实现:
1)如果head为空,或者只有head这一个节点,return head即可;
2)先遍历head->next为首的链表,得到一个头结点newHead;
3)把head赋值给head->next->next, head->next为空;
4)返回newHead。
struct ListNode* reverseList(struct ListNode* head) { if(head == NULL || head->next == NULL) return head; struct ListNode* newHead = reverseList(head->next); head->next->next = head; head->next = NULL; return newHead; }
相关文章推荐
- VTK交互
- mybatis中的#和$的区别
- ios微信点击超链接,去掉半透明黑色框效果
- 23种设计模式
- 读文件错误
- RecyclerView重写线性布局管理器
- 【BZOJ4548】小奇的糖果
- APUE读书笔记-第十章 信号
- @RequestParam @RequestBody @PathVariable
- PAT-B 1027. 打印沙漏
- maven一直无法依赖问题(总结)
- nyoj_75 日期计算
- javascript中继承(二)-----借用构造函数继承的个人理解
- 命令注入
- android 文件操作类简易总结
- 并发队列ConcurrentLinkedQueue和阻塞栈LinkedBlockingQueue用法和阻塞队列ArrayBlockingQueue
- RecyclerView重写网格的布局管理器
- ASPxGridView 导出和部分属性设置
- Handler事件分发机制
- nodejs express框架 中app.js