【发布时间】:2022-06-30 18:05:45
【问题描述】:
链表的定义:
type ListNode struct {
Val int
Next *ListNode
}
插入进行指针操作的助手: 我知道 root.Val == 0 不能解决输入数组包含 0 个元素的问题,所以请提出更通用的方法来解决这个问题。
func insert(root *ListNode, elem int) *ListNode {
temp := ListNode{Val: elem, Next: nil}
if root.Val == 0 {
root = &temp
} else {
curr := root
for curr.Next != nil {
curr = curr.Next
}
curr = &temp
}
return root
}
主要功能:
func convertToList(arr []int) *ListNode {
var head ListNode
for _, val := range arr {
head = *insert(&head, val)
}
return &head
}
测试函数的字符串函数实现:
func (l *ListNode) String() string {
x := make([]int, 0)
curr := l
for curr != nil {
x = append(x, curr.Val)
curr = curr.Next
}
return fmt.Sprint(x)
}
我复制输出的主要功能:
func main() {
arr := []int{1, 2, 3, 4, 5}
listNode := convertToList(arr)
fmt.Println(listNode.String())
}
输出:
[1]
预期输出:
[1 2 3 4 5]
【问题讨论】:
标签: arrays go linked-list reference