//问题:给出两个链表(N、M),输入数据,将其合并成为一个链表
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef struct Node
{
int id;
Node* next;
};
Node *Creat_List(int n);
void print_List(Node* L);
Node* Merge(Node* A, Node* B, int n, int m);
void main()
{
int N, M;
printf("请A链表的长度:\n");
scanf_s("%d", &N);
Node* A;
printf("请输入A链表的值:\n");
A=Creat_List(N);
printf("请B链表的长度:\n");
scanf_s("%d", &M);
Node* B;
printf("请输入B链表的值:\n");
B=Creat_List(M);
printf("A链表值为:\n");
print_List(A);
printf("B链表值为:\n");
print_List(B);
printf("融合后结果为:\n");
Node* C;
C = Merge(A, B, N, M);
print_List(C);
}
Node* Creat_List(int n)
{
Node *head,* p;
head = (Node*)malloc(sizeof(Node));
head->next = NULL;
p = head;
for (int i = 0; i < n; i++)
{
Node* s = (Node*)malloc(sizeof(Node));
scanf_s("%d", &s->id);
s->next = NULL;
p->next = s;
p = s;
}
return head;
}
void print_List(Node* L)
{
Node* p;
p = L->next;
while (p)
{
printf("%-3d\n", p->id);
p = p->next;
}
}
Node* Merge(Node* A, Node* B,int n ,int m)
{
Node* a, *b,*L;
L = A;
a = A;
b = B;
for (int i = 0; i < n; i++)
{
a = a->next;
}
a->next = b->next;
return A;
}
两个链表合并为一个链表
最新推荐文章于 2024-05-01 16:00:54 发布
本文探讨了如何将两个已排序的链表高效地合并成一个单一的有序链表。通过迭代或递归的方法,我们可以合并这些链表,保持其排序顺序。详细介绍了合并过程中的关键步骤和算法实现。
4292

被折叠的 条评论
为什么被折叠?



