- #include <stdio.h>
- #include <stdlib.h>
- #define MAXLENGTH 5
- struct Data {
- int data;
- struct Data *next;
- };
- struct Data *list_merge(struct Data *list_a, struct Data *list_b, struct Data *result);
- int main(){
- typedef struct Data Data;
- Data *head_a, *head_b;
- Data *now_a, *now_b;
- Data *curr;
- head_a = (Data *)malloc(sizeof(Data));
- head_a -> data = 1;
- now_a = head_a;
- head_b = (Data *)malloc(sizeof(Data));
- head_b -> data = 2;
- now_b = head_b;
- int i;
- for (i = 1; i < MAXLENGTH; i++){
- curr = (Data *)malloc(sizeof(Data));
- curr->data = i*2 + 1;
- curr->next = NULL;
- now_a -> next = curr;
- now_a = curr;
- }
- for (i = 1; i < MAXLENGTH + 2; i++){
- curr = (Data *)malloc(sizeof(Data));
- curr -> data = i * 2 + 2;
- curr -> next = NULL;
- now_b -> next = curr;
- now_b = curr;
- }
- printf("List A: ");
- now_a = head_a;
- while (now_a != NULL){
- printf("%d", now_a -> data);
- if (now_a -> next != NULL)
- printf(" -> ");
- now_a = now_a -> next;
- }
- printf("\\n");
- printf("List B: ");
- now_b = head_b;
- while (now_b != NULL){
- printf("%d", now_b -> data);
- if (now_b -> next != NULL)
- printf(" -> ");
- now_b = now_b -> next;
- }
- printf("\\n");
- printf("After merge: ");
- Data *result = NULL;
- result = list_merge(head_a, head_b, result);
- while (result) {
- printf("%d", result -> data);
- if (result -> next != NULL){
- printf(" -> ");
- }
- result = result -> next;
- }
- printf("\\n");
- return 0;
- }
- struct Data *list_merge(struct Data *list_a, struct Data *list_b, struct Data *result){
- struct Data *pa, *pb, *pc;
- pa = list_a;
- pb = list_b;
- if (pa != NULL && pb != NULL && pa -> data <= pb -> data){
- result = pa;
- pc = pa;
- pa = pa -> next;
- }else if (pa != NULL && pb != NULL) {
- result = pb;
- pc = pb;
- pb = pb -> next;
- }
- while (pa && pb){
- if (pa -> data <= pb -> data){
- pc -> next = pa;
- pc = pa;
- pa = pa -> next;
- }else{
- pc -> next = pb;
- pc = pb;
- pb = pb -> next;
- }
- }
- pc -> next = pb == NULL ? pa : pb;
- pc = result;
- return pc;
- }
- //该片段来自于http://www.codesnippet.cn/detail/230720134758.html
来源: http://www.codesnippet.cn/detail/230720134758.html