是否可以在 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
}
我需要为 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
}