1. 程式人生 > >go語言:反轉單鏈表

go語言:反轉單鏈表

反轉單鏈表

package main

import "fmt"

type node struct {
    value    int
    nextNode *node
}

func reverseNode(head *node) *node {
//  先宣告兩個變數
//  前一個節點
    var preNode *node
    preNode = nil
//  後一個節點
    nextNode := new(node)
    nextNode = nil
    for head != nil {
        //  儲存頭節點的下一個節點,
        nextNode = head.nextNode
        //  將頭節點指向前一個節點
head.nextNode = preNode // 更新前一個節點 preNode = head // 更新頭節點 head = nextNode } return preNode } func printNode(head *node) { for head != nil { //fmt.Print(head.value, "\t") fmt.Println(head) head = head.nextNode } fmt.Println() } func
main() { node1 := new(node) node1.value = 1 node2 := new(node) node2.value = 2 node3 := new(node) node3.value = 3 node4 := new(node) node4.value = 4 node1.nextNode = node2 node2.nextNode = node3 node3.nextNode = node4 printNode(node1) head := reverseNode(node1) printNode(head) }

執行結果:

&{1 0xc42000e1f0}
&{2 0xc42000e200}
&{3 0xc42000e210}
&{4 <nil>}

&{4 0xc42000e200}
&{3 0xc42000e1f0}
&{2 0xc42000e1e0}
&{1 <nil>}