题目:
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
解题思路:迭代方式,从前往后依次反转。
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var ret *ListNode
for head!=nil{
p:=head.Next
head.Next=ret
ret = head
head = p
}
return ret
}
执行用时0ms
使用递归方法:
func reverseList(head *ListNode) *ListNode {
if head==nil{
return nil
}
if head.Next==nil{
return head
}
ret:= reverseList(head.Next)
head.Next.Next=head
head.Next=nil
return ret
}
执行用时0ms
關鍵字: Definition NULL head.Next