一、题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
二、我的题解
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
if head == nil { //首先需要判断传入的指针是否空,如果不为空,才进行下面的操作。对空指针操作会产生panic。
return nil
}
//反转链表的过程中需要三个辅助指针
var prev *ListNode //指向当前反转的节点的原前驱节点
var curr *ListNode //指向当前反转的节点
var next *ListNode //指向当前反转的节点的原后驱节点
curr = head
prev = nil //反转头结点时,使其指向 nil
//反转链表
for curr != nil {
next = curr.Next
curr.Next = prev
prev = curr
curr = next
}
head = prev
return head
}
评判结果:
注意:
- 对于传入参数是一个指针的情况,需要先确定指针非空才能进行操作。对空指针操作会产生 panic。
- 反转链表的过程中需要三个辅助指针的帮助。用 curr 指向当前反转的节点,next 记忆当前反转节点的原后驱节点,prev 记忆当前反转节点的原前驱节点。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118987.html