###### tags: `leetcode` `easy` `Linked List` `Recursion`
# [21. Merge Two Sorted Lists](https://leetcode.com/problems/merge-two-sorted-lists/)
## Description
You are given the heads of two sorted linked lists `list1` and `list2`.
Merge the two lists in a one **sorted** list. The list should be made by splicing together the nodes of the first two lists.
Return *the head of the merged linked list*.
## Examples
### Example1
**Input**: list1 = [1,2,4], list2 = [1,3,4]
**Output**: [1,1,2,3,4,4]
### Example 2:
**Input**: list1 = [], list2 = []
**Output**: []
### Example 3:
**Input**: list1 = [], list2 = [0]
**Output**: [0]
## Constraints:
- The number of nodes in both lists is in the range` [0, 50]`
- $-100 \leq Node.val \leq 100$
- Both `list1` and `list2` are sorted in **non-decreasing** order.
## Code
```c=
typedef struct ListNode LINODE;
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
LINODE ans, *tmp = &ans;
while (list1 && list2) {
if (list1->val <= list2->val) {
tmp->next = list1;
list1 = list1->next;
} else {
tmp->next = list2;
list2 = list2->next;
}
tmp = tmp->next;
}
tmp->next = list1 ? list1 : list2;
return ans.next;
}
```
## Complexity
|Space |Time |
|- |- |
|$O(1)$|$O(Min(list1, list2))$|
## Result
- Runtime : 0 ms, 100%
- Memory usage : 6.2 MB, 27.97%