C语言顺序表求集合交集

求集合交集。

【输入格式】:

第一行是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++作者可以根据思路修改一下