题目传送门
牛客面试必刷101题 ----------反转链表
题目以及答案源码
反转链表
题目
解题方法
- 递归函数遍历链表并反转
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
}