#include <stdio.h>
typedef struct ListNode ListNode;
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
ListNode* cur1 = list1;
ListNode* beforecur1 = NULL;
ListNode* cur2 = list2;
if (cur2 == NULL)
{
return list1;
}
while (cur1 && cur2)
{
if (cur1->val > cur2->val)
{
if (beforecur1 == NULL)
{
list2 = cur2->next;
cur2->next = list1;
beforecur1 = cur2;
list1 = cur2;
cur2 = list2;
}
else
{
list2 = cur2->next;
beforecur1->next = cur2;
beforecur1 = cur2;
cur2->next = cur1;
cur2 = list2;
}
}
else
{
beforecur1 = cur1;
cur1 = cur1->next;
}
}
if (cur2)
{
if (beforecur1 == NULL)
{
list1 = cur2;
}
else
{
beforecur1->next = cur2;
}
}
return list1;
}