三行代码解反转链表
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三行代码解反转链表相关的知识,希望对你有一定的参考价值。
文章目录
最强解析面试题:链表反转[go版]
文章讲解 “ 链表反转[go版] ” 经典面试题,包含思路及源码,及解惑!
题目
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
思路
- 递归/迭代思路
1->2->3- 目标分三步
- 第一步是 1->nil;第二步是 2->1->nil;第三步是 3->2->1->nil
- 准备
- 预备首节点 pre
- 迭代 or 递归
- 1 单拎出来 tmp
- 1 -> 1.next [ 2 单拎出来 tmp]
- tmp -> pre
- pre = tmp
- 退出条件
- 1 == nil
- 目标分三步
代码
三行一解
这里给出三行代码,足以完成题目,了解更多,请关注 公众号 “ code 杂坛 “!
package main
import . "nc_tools"
/*
* type ListNode struct
* Val int
* Next *ListNode
*
*/
/**
*
* @param pHead ListNode类
* @return ListNode类
*/
func ReverseList(pHead *ListNode) *ListNode
// write code here
if pHead == nil || pHead.Next == nil
return pHead
var pre *ListNode
for pHead != nil
pre, pHead, pHead.Next = pHead, pHead.Next, pre
return pre
常规代码
package main
import."nc_tools"
/*
* type ListNode struct
* Val int
* Next *ListNode
*
*/
/**
*
* @param pHead ListNode类
* @return ListNode类
*/
func ReverseList(pHead *ListNode) *ListNode
// write code here
if pHead == nil || pHead.Next == nil
return pHead
var prev *ListNode
cur := pHead
for
if cur == nil
break
tmp := cur
cur = cur.Next
tmp.Next = prev
prev = tmp
return prev
以上是关于三行代码解反转链表的主要内容,如果未能解决你的问题,请参考以下文章