首页 > 解决方案 > 我无法创建长链表

问题描述

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 个节点。有关更多信息,请参见下图:

图片

标签: go

解决方案


您的链接列表工作正常,尽管它不是创建链接列表的正确方法。您只有 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
}

推荐阅读