Reverse Linked List

描述

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL    
输出: 5->4->3->2->1->NULL

进阶:

你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

解析

设置三个节点precurnext

  • (1)每次查看cur节点是否为NULL,如果是,则结束循环,获得结果

  • (2)如果cur节点不是为NULL,则先设置临时变量nextcur的下一个节点

  • (3)让cur的下一个节点变成指向pre,而后pre移动curcur移动到next

  • (4)重复(1)(2)(3)

代码

迭代

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null) {
return head;
}
ListNode pre = null;
ListNode cur = head;
while (cur != null) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
}

递归

public static ListNode reverseLinkedList(ListNode head) {
if (head == null || head.next == null) {
return head;
} ListNode node = reverseLinkedList(head.next);
head.next.next = head;
head.next = null;
//比如1->2->3,第一次执行到这里:3->2->NULL
return node;
}

最新文章

  1. 在.NET Core 里使用 BouncyCastle 的DES加密算法
  2. Mysql Explain 详解(转)
  3. (shell )函数
  4. JavaScript工具库之Lodash
  5. KnockoutJS 3.X API 第四章 表单绑定(8) submit、enable、disable绑定
  6. 【FZU】1977 Pandora adventure
  7. 转!!java反射机制
  8. 启动项目报错Error: listen EADDRINUSE
  9. [luogu P2170] 选学霸(并查集+dp)
  10. phpstorm使用svn爆出“cannot load supported formats” 的解决
  11. Elasticsearch template(待续...)
  12. MySql命令——show,分页,正则表达式
  13. python2 和3的区别
  14. loading 动画效果(收藏起来以后留着慢慢用)
  15. Leetcode_191_Number of 1 Bits
  16. 如何实现Web聊天
  17. java正则表达式验证汉字
  18. 老问题:Android子线程中更新UI的3种方法
  19. HDU 2502 月之数(二进制,规律)
  20. linux下安装jdk 详细步骤(一条命令即可安装)

热门文章

  1. OpenGL学习笔记 之三 (简单示例 太阳月亮地球)
  2. 酒店移动端入住离店日期选择demo(转)
  3. eclipse界面
  4. [转帖]hive与hbase的联系与区别:
  5. [转帖]2018年SaaS行业收入结构及未来发展预测[图]
  6. 车牌识别代码OpenCV
  7. centos7.6编译安装php7.3
  8. Vue基础知识学习(后端)
  9. 1234: 约瑟夫问题-输出最后的编号(Java)
  10. 深度学习-mnist手写体识别