206. 反转链表

package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func reverseList(head *ListNode) *ListNode {
var pre *ListNode // 前驱节点指针
cur := head // 当前节点指针
for cur != nil {
next := cur.Next // 临时存储next指针
cur.Next = pre // next指针反转
pre = cur
cur = next
}
return pre
}
func main() {
list := createList(5)
printList(list)
list = reverseList(list)
printList(list)
}
// 创建链表
func createList(sz int) *ListNode {
head := &ListNode{}
tail := head
for i := 0; i < 5; i++ {
node := &ListNode{Val: i}
tail.Next = node
tail = node
}
return head.Next
}
// 打印链表
func printList(head *ListNode) {
for p := head.Next; p != nil; p = p.Next {
fmt.Printf("%d ", p.Val)
}
fmt.Println()
}

PS C:\Users\wushujie\Desktop\leetcode\code> go run .\reverse-linked-list.go
1 2 3 4
3 2 1 0

posted @   gdut17_2  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示