将两个有序链表head1、head2合成一个有序链表

来源:互联网 发布:乳胶漆调色软件 编辑:程序博客网 时间:2024/06/05 11:07

将两个有序链表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;}
0 0