SCAU 数据结构 2 求交集

描述
用顺序表表示集合,集合元素为整型数据,设计一个算法实现两个集合的求交集运算。

输入格式
第一行:集合A和集合B的元素个数n,m
第二行:集合A的n个元素
第三行:集合B的m个元素

输出格式
输出:第一行:集合A,B的交集元素(要求按照元素在A集合中出现的次序输出),如果交集为空则输出null

样例1:

输入:
5 3
6 3 90 1 88
88 1 2

输出:
1 88

输入样例
5 3
6 3 90 1 88
33 44 55

输出样例
null

#include 
#include 
#include 
#define OK 1
#define ERROR 0
#define ElemType int

using namespace std;
typedef int Status;

typedef struct LNode
{
    int data;
    struct LNode *next;
}LNode,*LinkList;

Status CreateLink_L(LinkList &L,int n)
{
    LinkList p,s;
    int i;
    ElemType e;
    L=new LNode;
    L->next=NULL;
    p=L;
    for(i=0;idata=e;
        s->next=NULL;
        p->next=s;
        p=s;
    }
    return OK;
}

Status CreateEmptyLink_L(LinkList &L)
{
    L=new LNode;
    L->next=NULL;
    return OK;
}

Status ListInsert_L(LinkList &L,int i,ElemType e)
{
    LinkList p,s;
    int j=1;
    p=L;
    while(p&&jnext;
        j++;
    }
    if(!p||j>i) return ERROR;
    s=new LNode;
    s->data=e;
    s->next=p->next;
    p->next=s;
    return OK;
}

Status ListDelete_L(LinkList &L,int i,ElemType &e)
{
    LinkList p,s;
    int j=1;
    p=L;
    while(p->next&&j<=i)
    {
        s=p;
        p=p->next;
        j++;
    }
    if(!(p->next)||j>i) return ERROR;
    e=p->data;
    s->next=p->next;
    delete p;
    return OK;
}

Status LoadLink_L(LinkList &L)
{
    LinkList p=L->next;
    if(p==NULL) printf("null");
    else{
        while(p!=NULL)
        {
            printf("%d ",p->data);
            p=p->next;
        }
    }
    printf("\n");
    return OK;
}

Status SwitchList_L(LinkList &LA, LinkList &LB,LinkList &LC)
{
    LinkList pa,pb,pc,sc;
    pa=LA->next;
    pb=LB->next;
    pc=LC;
    for(int i=0;pa!=NULL;i++)
    {
        for(int j=0;pb!=NULL;j++)
        {
            if(pa->data==pb->data)
            {
                sc=new LNode;
                sc->data=pa->data;
                sc->next=NULL;
                pc->next=sc;
                pc=sc;
                break;
            }
            else if(pa->data!=pb->data)
            {
                pb=pb->next;
            }
        }
        pb=LB->next;
        pa=pa->next;
    }
    return OK;
}

int main()
{
    LinkList A,B,C;
    int a,b;
    scanf("%d %d",&a,&b);
    CreateLink_L(A,a);
    CreateLink_L(B,b);
    CreateEmptyLink_L(C);
    SwitchList_L(A,B,C);
    LoadLink_L(C);
}

你可能感兴趣的:(2022SCAU数据结构,数据结构)