不是链表,但能过
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B 的差集C(即仅由在A中出现而不在B中出现的元素所构成的集合),并将差集C以同样的形式存储,同时返回该集合C的元素个数。
输入格式:
输入两组数据为元素递增的数组,并构成两个链表A和B。
每一组数据的第一行输入数组长度,第二行输入递增数组。
输出格式:
输出链表C表示的差集的长度和元素。
输入样例:
5
1 3 5 7 9
3
2 3 5
答案:
#include <stdio.h>
int main()
{
int A = 0, B = 0;
int arr1[100] = { 0 };
int arr2[100] = { 0 };
int arr_my[200] = { 0 };
scanf("%d", &A);
if (A == 0)
{
return 0;
}
for (int i = 0; i < A; i++)
{
scanf("%d", &arr1[i]);
}
scanf("%d", &B);
if (B == 0)
{
for (int i = 0; i < A; i++)
{
printf("%d ", arr1[i]);
}
return 0;
}
for (int i = 0; i < B; i++)
{
scanf("%d", &arr2[i]);
}
int flag = 0;
int n = 0;
for (int i = 0; i < A; i++)
{
flag = 0;
for (int j = 0; j < B; j++)
{
if (arr1[i] == arr2[j])
{
flag = 1;
break;
}
}
if (flag == 0)
{
arr_my[n] = arr1[i];
n++;
}
}
printf("%d\n", n);
if (n == 0)
{
return 0;
}
for (int i = 0; i < n-1; i++)
{
printf("%d ", arr_my[i]);
}
printf("%d", arr_my[n-1]);
return 0;
}