题目传送门
牛客面试必刷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=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
}