求集合交集。
【输入格式】:
第一行是A和B的元素个数m和n(m,n <=100);
第二行是集合A的m个元素;
第三行是集合A的n个元素。
【输出格式】:
输出交集的所有元素(按照在A集合出现的顺序输出,最后一个输出后面没有空格)。 若交集为空,输出“NULL”。
【输入样例1】:
3 4
10 9 2
9 10 8 0
【输出样例1】:
10 9
【输入样例2】:
4 5
1 2 3 4
5 6 7 8 9
【输出样例2】:
NULL
#include
#include
#define SIZE 100
typedef struct
{
int *elem;
int length;
int listsize;
}Sqlist;
void initlist_Sq(Sqlist &L)
{
L.elem=(int *)malloc(SIZE*sizeof(int));
if(!L.elem)
exit(1);
L.length=;
int listsize=SIZE;
}
int input(Sqlist &L,int k)
{
int i=0;
while(iscanf("%d",&L.elem[i]);
i++;
}
L.length=i;
return L.length;
}
int search(Sqlist La,Sqlist Lb,Sqlist &Lc)
{
int a=0;
for(int j=0;jfor(int l=0;lif(La.elem[j]==Lb.elem[l])
{
Lc.elem[a]=La.elem[l];
Lc.length=++a;
}
else
continue;
}
return Lc.length;
}
int main()
{
int n,m;
Sqlist La;
Sqlist Lb;
Sqlist Lc;
scanf("%d %d",&n,&m);
input(La,n);
input(Lb,m);
search(La,Lb,Lc);
if(Lc.length!=0)
{
for(int i=0;iprintf("%d",Lc.elem[i]);
}
else
printf("NULL");
return 0;
(本人基础差)求指正
出现啥问题了啊?
#include <stdio.h>
int main() {
int m, n;
scanf("%d %d", &m, &n);
int A[100], B[100];
for (int i = 0; i < m; i++) {
scanf("%d", &A[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &B[i]);
}
int intersection[100];
int k = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (A[i] == B[j]) {
int found = 0;
for (int l = 0; l < k; l++) {
if (A[i] == intersection[l]) {
found = 1;
break;
}
}
if (!found) {
intersection[k++] = A[i];
}
break;
}
}
}
if (k == 0) {
printf("NULL");
} else {
for (int i = 0; i < k; i++) {
printf("%d", intersection[i]);
if (i != k - 1) {
printf(" ");
}
}
}
return 0;
}
以上代码使用C语言写的,如果需要C++作者可以根据思路修改一下