编辑代码

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

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

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

ListNode* mergeLists(ListNode* LA, ListNode* LB) {
    ListNode* LC = NULL;
    ListNode* tail = NULL;
    while (LA || LB) {
        ListNode* newNode;
        if (LA && LB) {
            newNode = createNode(LA->data);
            LA = LA->next;
        } else if (LA) {
            newNode = createNode(LA->data);
            LA = LA->next;
        } else {
            newNode = createNode(LB->data);
            LB = LB->next;
        }
        if (!LC) {
            LC = newNode;
            tail = newNode;
        } else {
            tail->next = newNode;
            tail = tail->next;
        }
    }
    return LC;
}

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

void freeList(ListNode* head) {
    ListNode* temp;
    while (head) {
        temp = head;
        head = head->next;
        free(temp);
    }
}

int main() {
    ListNode* LA = createNode(1);
    LA->next = createNode(3);
    LA->next->next = createNode(5);

    ListNode* LB = createNode(2);
    LB->next = createNode(4);
    LB->next->next = createNode(6);

    ListNode* LC = mergeLists(LA, LB);

    printList(LC);

    freeList(LA);
    freeList(LB);
    freeList(LC);

    return 0;