合并有序链表,这种题目常考也是面试中经常遇到的。一般采取创建一个虚拟头节点,遍历两个链表,比较大小,然后追加到dumy后面,最后不要忘记把剩下没遍历完的链表加到后面。
/* define sigle-link struct */
struct ListNode {
int val;
ListNode* next;
ListNode(int a): val(a), next(nullptr){}
};
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
ListNode dumy = new ListNode(0);
ListNode curr = dumy;
while(list1 && list2) {
if(list1->val < list2->val) {
curr-> next = list1;
list1 = list1->next;
} else {
curr-> next = list2;
list2 = list2->next;
}
curr = curr->next;
}
curr->next = list1?list1:list2;
return dumy->next;
}