最强解析面试题:链表反转[go版]
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最强解析面试题:链表反转[go版]相关的知识,希望对你有一定的参考价值。
最强解析面试题:链表反转[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
- 目标分三步
代码
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
附录
自负和自大真的是搞笑!
以上是关于最强解析面试题:链表反转[go版]的主要内容,如果未能解决你的问题,请参考以下文章