struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2){
struct ListNode *head = (struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode *p = head;
head->next = NULL;
if(!list1&&!list2){return head->next;}
while(list1&&list2){
if(list1->data <= list2->data){
p->next = (struct ListNode*)malloc(sizeof(struct ListNode));
p= p->next;
p->data = list1->data;
p->next = NULL;
list1 =list1->next;
}else{
p->next = (struct ListNode*)malloc(sizeof(struct ListNode));
p= p->next;
p->data = list2->data;
p->next = NULL;
list2 = list2->next;
}
}
if(list1==NULL){
p->next = list2;
}else if(list2==NULL){
p->next = list1;
}
return head->next;
}