该题目来源于牛客网《剑指offer》专题。

输入一个链表,反转链表后,输出新链表的表头。

Go语言实现:

迭代:

/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var pre *ListNode = nil
for head!=nil {
//先存下一个节点,不然一会就没了
next := head.Next
//当前节点指向上一个节点
head.Next = pre
pre = head
head = next
//等价于 pre, head, head.Next = head, head.Next, pre
}
return pre
}

递归:

func reverseList(head *ListNode) *ListNode {
return reverse(nil, head)
}

func reverse(pre,cur *ListNode) *ListNode {
if cur == nil {
return pre
}
head := reverse(cur, cur.Next)
cur.Next = pre
return head
}

最新文章

  1. Android 横竖屏+碎片的应用
  2. Lua 性能相关笔记
  3. paper 132:图像去噪算法:NL-Means和BM3D
  4. word中公式居中、编号居右方法
  5. Logger
  6. springmvc restful配置有一个小小的坑坑
  7. git 最常用命令
  8. SpringMVC解析5-DispatcherServlet逻辑细节
  9. bitmap格式分析
  10. hadoop开发环境-----eclipse
  11. Ubuntu下安装JDK图文详解
  12. VS2012 利用正则统计项目代码行数
  13. A - FatMouse' Trade
  14. 【自制工具类】Java删除字符串中的元素
  15. VS 2017 发布:由于构建错误,发布失败
  16. 【NOIP2009】【CJOJ1687】【洛谷1074】靶形数独
  17. maven隐式依赖引起的包冲突
  18. ambari2.6.1汉化记录
  19. poj3162
  20. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

热门文章

  1. 深入理解vue的watch
  2. 【转】常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)
  3. Date类与日期格式
  4. nacos-docker安装nacos并配置数据库
  5. Anaconda的CondaHTTPError问题
  6. Android Linker简介
  7. 基于AOP和ThreadLocal实现的一个简单Http API日志记录模块
  8. [bzoj4823][洛谷P3756][Cqoi2017]老C的方块
  9. java面试| 精选基础题(3)
  10. C# winform 弹框提示内存不足