ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Go语言每日一练链表篇(一)

Go语言每日一练链表篇(一)

题目传送门

牛客面试必刷101题 ----------反转链表

题目以及答案源码

反转链表

题目

在这里插入图片描述

解题方法

  1. 递归函数遍历链表并反转
package main
import _"fmt"
import . "nc_tools"
/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @return ListNode类
*/
func ReverseList( head *ListNode ) *ListNode {if head==nil{return head}if head.Next==nil{return head}root:=ReverseList(head.Next)head.Next.Next=headhead.Next=nilreturn root
}

2.三指针迭代法

package main
import _"fmt"
import . "nc_tools"
/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @return ListNode类
*/
func ReverseList( head *ListNode ) *ListNode {if head ==nil|| head.Next==nil{return head}var prev *ListNode=nilcurrent:=headfor current!=nil{next:=current.Nextcurrent.Next=prevprev=currentcurrent=next}return prev
}
返回列表