是否可以在 goLang 的循环内创建新的链表节点?

Is it possible to create new linked list nodes inside a loop in goLang?

我需要为 linked 列表和 return 函数内的头部创建节点。

每个节点的定义:

type ListNode struct {
    Val  int
    Next *ListNode
}

这是函数:


func addTwoNumbers(l1 *ListNode, l2 *ListNode) []string {

    calculateValue := func(l *ListNode) int {
        var sumsum int
        element := l
        weight := 1
        for element != nil {
            sumsum = sumsum + element.Val*weight
            weight = weight * 10
            element = element.Next
        }
        return sumsum
    }

    numstr := strconv.Itoa(calculateValue(l1) + calculateValue(l2))

    listsum := strings.Split(numstr, "")

    return listsum

}

现在函数 return 是一个字符串列表,每个字符串应该分配给每个节点中的 Val。(Val 是一个整数,现在列表是我可以处理的字符串稍后)。

因此,我们的想法是使用 for 循环遍历列表,并在 for 中创建节点和 link 它们。它看起来像这样(在 return 之前的 addTwoNumbers 内):

    for _, element := range listsum{
        

    }

有没有办法做到这一点?

评论中提到的解决方案

// create head with the value from first element
head := &ListNode{ Val: listSum[0] }

tail := head
// range remaining values
for _, sum := range listSum[1:] {
    node := &ListNode{ Val: sum }
    tail.Next = node // append node to list
    tail = node // change tail pointer to currently added node
}