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

题目传送门

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

题目以及答案源码

反转链表

题目

Go语言每日一练链表篇(一)_第1张图片

解题方法

  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=head
    head.Next=nil
    return 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=nil
    current:=head
    for current!=nil{
        next:=current.Next
        current.Next=prev
        prev=current
        current=next
    }
    return prev
}

你可能感兴趣的:(Go语言每日一题,golang,开发语言,后端,数据结构,链表)