Go单链表反转

package main

import (
    "fmt"
)

type Node struct {
    Val int
    Next *Node
}

func reverse(listNode *Node) *Node {
    var node *Node
    head := listNode
    for head != nil {
        head.Next, node, head = node, head, head.Next
        // 下边是上一句的拆解
        // tmp := head.Next
        // head.Next = node
        // node = head
        // head = tmp
    }
    return node
}

func initList(data []int) *Node {
    head := &Node{}
    h := head
    for _, v := range data[:len(data)-1] {
        h.Next = &Node{}
        h.Val = v
        h = h.Next
    }
    h.Val = data[len(data)-1]
    return head
}

func printList(listNode *Node) {
    for listNode != nil {
        fmt.Println(listNode.Val)
        listNode = listNode.Next
    }
}
func main() {
    data := []int{1,3,5,6,7}
    listNode := initList(data)
    printList(listNode)
    listNode = reverse(listNode)
    printList(listNode)
}
发布了162 篇原创文章 · 获赞 131 · 访问量 83万+

猜你喜欢

转载自blog.csdn.net/u013474436/article/details/105303658