博客搬家:https://blog.csdn.net/zheyufuck/article/details/53188754
将两个有序链表head1、head2合成一个有序链表,实现的方法有很多中,例如:先将两个链表合成一个,再用排序算法进行排序;或者直接进行比较排序,这里采用的是类似于直接选择排序的方法进行排序
实现程序:
void tomerge(struct list * head1,struct list * head2){
struct list * ptr = head1->next;
struct list * last;//指向已排好序链表的最后一个元素
head1->next = NULL;
head2 = head2->next;
last = head1;
while(ptr != NULL&& head2 != NULL){
/*将两个链表中最小的链接到新的链表中*/
if(ptr->data <= head2->data){
last->next = ptr;
last = ptr;
ptr = ptr->next;
}else{
last->next = head2;
last = head2;
head2 = head2->next;
}
last->next = NULL;
}
/*将链表的剩余部分链接到已排好序的链表的后面*/
if(ptr != NULL)
last->next = ptr;
else if(head2 != NULL)
last->next = head2;
}