我无法创建长链接列表

时间:2018-08-22 09:47:27

标签: go

package main

func main() {
    var arr [99]ListNode
    for i := 0; i < 99; i++ {
        var tempArr ListNode
        tempArr.Val = i
        arr[i] = tempArr
    }
    for i := 0; i < 98; i++ {
        arr[i].Next = &arr[i+1]
    }
}

type ListNode struct {
    Val  int
    Next *ListNode
}

我想创建一个包含99个元素的链表,但它会中断每3个节点。有关更多信息,请参见下图:

image

1 个答案:

答案 0 :(得分:4)

您的链表工作正常,尽管这不是创建链表的正确方法。您只有3个节点的原因是调试器跟踪限制。我写了一个打印循环来显示链接列表中的值。

package main

func main() {
    var arr [99]ListNode
    for i := 0; i < 99; i++ {
        var tempArr ListNode
        tempArr.Val = i
        arr[i] = tempArr
    }
    for i := 0; i < 98; i++ {
        arr[i].Next = &arr[i+1]
    }
}

type ListNode struct {
    Val  int
    Next *ListNode
}

我还写了另一段代码,展示了如何以正确的方式创建链接列表。

package main

import "fmt"

func main() {
    start := &ListNode{}
    node := start
    for i := 0; i < 100; i++ {
        node.Val = i
        node.Next = &ListNode{}
        node = node.Next
    }
    for node := start; node.Next != nil; node = node.Next {
        fmt.Printf("%d -> ", node.Val)
    }
}

type ListNode struct {
    Val  int
    Next *ListNode
}