思路没啥好说的,但是吧语法上有点问题。开始想的是创建struct存入值,其实处理链表又不保留原链表不用这么麻烦。
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
p1, p2 := list1, list2
node := ListNode{0, nil} // 空的头指针 (但是显然这样写不是一个指针,应该先赋值一个指针,再通过指针访问元素)
top := node
for p1 != nil && p2 != nil {
if p1.Val < p2.Val{
node.Next = ListNode{p1.Val, nil}
p1 = p1.Next
} else {
node.Next = ListNode{p2.Val, nil}
p2 = p2.Next
}
node = node.Next
}
if p1 != nil{
node.Next = p1.Next
} else if p2 != nil {
node.Next = p2.Next
}
return top.Next
}
改了之后的版本
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
p1, p2 := list1, list2
node := &ListNode{} // 空的头指针
top := node
for p1 != nil && p2 != nil {
if p1.Val < p2.Val{
node.Next = p1
p1 = p1.Next
} else {
node.Next = p2
p2 = p2.Next
}
node = node.Next
}
if p1 != nil{
node.Next = p1
} else if p2 != nil {
node.Next = p2
}
return top.Next
}