最强解析面试题:链表反转[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版]的主要内容,如果未能解决你的问题,请参考以下文章

最强解析面试题:从尾到头打印链表「建议收藏!」

最强解析面试题:从尾到头打印链表「建议收藏!」

最强解析面试题:合并两个排序的链表

最强解析面试题:如何判断链表是否存在环?

最强解析面试题:如何判断链表是否存在环?

最强解析面试题:Goland 并发版斐波那契数列