编辑代码

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

// 定义链表节点结构
typedef struct Node {
    int data;
    struct Node* next;
} Node;

// 创建新节点
Node* createNode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

// 插入节点到有序链表中
Node* insertNode(Node* head, int data) {
    Node* newNode = createNode(data);
    if (head == NULL || head->data >= data) {
        newNode->next = head;
        head = newNode;
    } else {
        Node* current = head;
        while (current->next != NULL && current->next->data < data) {
            current = current->next;
        }
        newNode->next = current->next;
        current->next = newNode;
    }
    return head;
}

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

int main() {
    int n, m, i, value;
    Node* head = NULL;

    // 输入有序链表的长度和元素
    printf("输入有序链表的长度和元素:\n");
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        scanf("%d", &value);
        head = insertNode(head, value);
    }

    // 输入要插入的节点个数和元素
    printf("输入要插入的节点个数和元素:\n");
    scanf("%d", &m);
    for (i = 0; i < m; i++) {
        scanf("%d", &value);
        head = insertNode(head, value);
    }

    // 输出最终的有序链表
    printf("最终的有序链表:\n");
    printList(head);

    return 0;
}