36 lines
594 B
Go
36 lines
594 B
Go
package q21
|
|
|
|
type ListNode struct {
|
|
Val int
|
|
Next *ListNode
|
|
}
|
|
|
|
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
|
|
root := &ListNode{}
|
|
cur := root
|
|
|
|
for {
|
|
if list1 == nil && list2 == nil {
|
|
return root.Next
|
|
}
|
|
if list1 == nil {
|
|
cur.Next = list2
|
|
return root.Next
|
|
} else if list2 == nil {
|
|
cur.Next = list1
|
|
return root.Next
|
|
} else if list1.Val < list2.Val {
|
|
cur.Next = list1
|
|
cur = cur.Next
|
|
list1 = list1.Next
|
|
cur.Next = nil
|
|
} else {
|
|
cur.Next = list2
|
|
cur = cur.Next
|
|
list2 = list2.Next
|
|
cur.Next = nil
|
|
}
|
|
}
|
|
}
|
|
|
|
var _ = mergeTwoLists
|