题目:

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

分析:

分别用迭代和递归来实现。

迭代就是新建一个newhead节点,遍历原链表,将每一个node接到newhead,注意保存head->next用来更新head。

递归则是利用函数先走到链表尾端,依次更新每一个node的next,最后返回newhead。

程序:

//iteratively
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *newhead = NULL;
while(head){
ListNode *p = head->next;
head->next = newhead;
newhead = head;
head = p;
}
return newhead;
}
};
//recursively
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == NULL || head->next == NULL){
return head;
}
ListNode* newhead = reverseList(head->next);
head->next->next = head;
head->next = NULL;
return newhead;
}
};

最新文章

  1. 深入理解javascript函数系列第一篇——函数概述
  2. mybatis oracle BLOB类型字段保存与读取
  3. GNU make规则的命令④书写命令
  4. Linux-小命令技巧
  5. 关于RACK的一点简单介绍
  6. 【转】驱动中的类class和节点
  7. rnqoj-30- [stupid]愚蠢的矿工-树形DP
  8. C++空类中的默认函数
  9. lamp论坛搭建
  10. 分享一个废弃已久的插件架构 (.Net)
  11. androidstudio连接SCM Manager上的Git库
  12. 如何构建Android MVVM 应用框架
  13. 程序员从宏观、微观角度浅析JVM虚拟机!
  14. 文本分布式表示(一):word2vec理论
  15. gerrit和git
  16. h5上传视频文件
  17. Linux安装jdk环境
  18. enq: TM - contention一例
  19. 禁止 "启动时恢复任何注册的应用程序"
  20. js 弹出新页面,避免被浏览器、ad拦截的一种办法

热门文章

  1. HTML中放置CSS的三种方式和CSS选择器
  2. MySQL----MySQL数据库入门----第一章 数据库入门
  3. HTML5常用标签及特殊字符表
  4. Hive(10)-文件存储格式
  5. 编写Makefile规则
  6. Java 多线程 volitile 和 atomic
  7. Framwork框架-网络客户端的使用
  8. 数据结构与算法之有序数组(2)——in dart
  9. 20155328 2016-2017-2 《Java程序设计》 课程总结
  10. 【转载】Ogre3d 2.1 源码编译安装教程