链表拼接
struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2) {
struct ListNode *p1 = list1, *p2 = list2, *prev = NULL, *pcurrent = NULL, *head = NULL;
if(p1==NULL) {
head = p2;
} else if(p2 == NULL) {
head = p1;
} else {
if(p2->data<p1->data) {
pcurrent = p2;
p2 = p2->next;
pcurrent->next = p1;
p1 = pcurrent;
head = p1;
}
prev = p1;
head = p1;
while(p2!=NULL) {
if(prev->next == NULL){
prev->next = p2;
break;
}
if(p2->data<=prev->next->data) {
pcurrent = p2;
p2 = p2->next;
pcurrent->next = prev->next;
prev->next = pcurrent;
prev = pcurrent;
} else {
prev = prev->next;
}
}
}
return head;
}