酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

用c语言链表合并。题目描述 题目内容:已知单链表la=(a1, a2 .…, am)和lb=(b1, b2.…, bn),编写程序按以下规则将它们合并成一个单链表lc,要求新表c利用原表的存储空间。 lc=(a1, b1. .…, am, bm, bm+1., bn), m<=n 或者 lc=(a1, b1. …, bn, an, an+1. …, am), m> 输入格式:一行内输入单链表la中的数据(若干个正整数,之间用空格隔开,并以1结束)一行内输入单链表lb的数据(若干个正整数,之间用空悄隔开,并以1结束) 输出格式:一行内输出合并后单链表lc的数据结果,之间用两个分隔符·…隔开,结束标志·1不输出。 输入样例:13 57-1 246-1 输出样例:-1-2-34--5-6-7 则试用例 用例1 分致:20 描误提示 用例2 分数:20 错误提示; 题目运行时间限制:500ms 题目运行内存限制:32000kb

#include<stdio.h> typedef struct Node{ int data; struct Node* next; }Node; // 创建链表 Node* createList(){ Node* head = (Node*)malloc(sizeof(Node)); head->next = NULL; return head; } // 向链表末尾插入元素 void insert(Node* head, int data){ Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; Node* p = head; while(p->next != NULL){ p = p->next; } p->next = newNode; } // 合并两个链表 Node* mergeLists(Node* la, Node* lb){ Node* lc = la; Node* pa = la->next; Node* pb = lb->next; while(pa != NULL && pb != NULL){ lc->next = pa; lc = pa; pa = pa->next; lc->next = pb; lc = pb; pb = pb->next; } if(pa != NULL){ lc->next = pa; } if(pb != NULL){ lc->next = pb; } return la; } // 打印链表的元素 void printList(Node* head){ if(head->next == NULL){ printf("链表为空\n"); return; } Node* p = head->next; while(p != NULL){ printf("%d", p->data); p = p->next; } } int main(){ Node* la = createList(); Node* lb = createList(); int num; scanf("%d", &num); while(num != 1){ insert(la, num); scanf("%d", &num); } scanf("%d", &num); while(num != 1){ insert(lb, num); scanf("%d", &num); } Node* lc = mergeLists(la, lb); printList(lc); return 0; } [2024-06-17 15:01:02 | AI写代码神器 | 1020点数解答]

相关提问