给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func reverseLinkedList(head *ListNode) *ListNode {
var prev *ListNode = nil // 前置节点为空
for head != nil {
next := head.Next // 保存下一个节点
head.Next = prev // 将当前节点连接到前置节点上
prev = head // 更新前置节点为当前节点
head = next // 移动至下一个节点
}
return prev // 返回反转后的头结点
}
func printLinkedList(node *ListNode) {
if node == nil {
fmt.Println("Empty linked list")
return
}
result := []int{}
curr := node
for curr != nil {
result = append(result, curr.Val)
curr = curr.Next
}
fmt.Printf("%v\n", result)
}
func main() {
// 创建原始链表 [1 -> 2 -> 3 -> 4]
l1 := &ListNode{Val: 1}
l2 := &ListNode{Val: 2}
l3 := &ListNode{Val: 3}
l4 := &ListNode{Val: 4}
l1.Next = l2
l2.Next = l3
l3.Next = l4
reversedHead := reverseLinkedList(l1)
fmt.Println("Reversed Linked List: ")
printLinkedList(reversedHead)
}