登录
首页 >  Golang >  Go问答

在 goLang 中的循环中创建新链表节点的方法

来源:stackoverflow

时间:2024-03-23 10:39:29 294浏览 收藏

在 Go 中,本文介绍了如何在循环中创建新链表节点。给定链表节点的定义和一个函数 `addtwonumbers`,该函数将两个链表的元素值相加并返回一个字符串列表。为了将这些字符串分配给链表节点的 `val` 属性,需要在循环中创建节点并将其链接在一起。正确的方法是首先创建一个包含第一个元素值的头节点,然后遍历剩余元素,为每个元素创建一个新节点并将其附加到链表中。

问题内容

我需要为链表创建一个节点并返回函数内的头。

每个节点的定义:

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

}

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

因此,我们的想法是使用 for 循环迭代列表并创建节点并在 for 内将它们链接在一起。它看起来像这样(返回之前在 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
}

到这里,我们也就讲完了《在 goLang 中的循环中创建新链表节点的方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>