编辑代码

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data; 
    struct Node* next; 
} Node;

Node* createNode(int value) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = value; 
    newNode->next = NULL;
    return newNode; 
}

Node* mergeLists(Node* list1, Node* list2) {
    Node* result = NULL; 
    Node* tail = NULL;

    while (list1 != NULL || list2 != NULL) {
        Node* newNode; 
        if (list1 != NULL && (list2 == NULL || list1->data < list2->data)) {
            newNode = createNode(list1->data);
            list1 = list1->next;
        } else {
            newNode = createNode(list2->data);
            list2 = list2->next;
        }

        if (result == NULL) {
            result = newNode;
            tail = newNode;
        } else {
            tail->next = newNode;
            tail = tail->next;
        }
    }

    return result;
}

void printList(Node* head) {
    while (head != NULL) {
        printf("%d ", head->data);
        head = head->next;
    }
    printf("\n"); 
}

int main() {
    Node* list1 = createNode(1);
    list1->next = createNode(3);
    list1->next->next = createNode(5);

    Node* list2 = createNode(2);
    list2->next = createNode(4);
    list2->next->next = createNode(6);

    Node* mergedList = mergeLists(list1, list2);
    printList(mergedList);

    return 0;
}