其他分享
首页 > 其他分享> > 菜鸟系列 Golang 实战 Leetcode —— 面试题24. 反转链表

菜鸟系列 Golang 实战 Leetcode —— 面试题24. 反转链表

作者:互联网

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

 

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
 

限制:

0 <= 节点个数 <= 5000

题解:

func reverseList(head *ListNode) *ListNode {
    // 原地反转
    if head==nil||head.Next==nil{
        return head
    }
    var newHead *ListNode
    var next *ListNode
    for head!=nil{
        next=head.Next
        head.Next=newHead
        newHead=head
        head=next
    }
    return newHead
}

思路,大致是 反转 下一个节点,然后当前节点的下一个节点的下一个节点为原来的头节点,原来的头节点的下一个节点为空

func reverseList(head *ListNode) *ListNode {
    // 递归反转
    if head==nil||head.Next==nil{
        return head
    }
    newHead:=reverseList(head.Next)
    head.Next.Next=head
    head.Next=nil
    return newHead
}

标签:面试题,nil,菜鸟,head,newHead,链表,反转,Next
来源: https://www.cnblogs.com/jiliguo/p/12423091.html