1. 程式人生 > >C語言利用順序表求兩個集合的差集

C語言利用順序表求兩個集合的差集

Description

A和B分別表示兩個集合,集合中的元素為整數,C=A和B的差集,計算並依次輸出C中的元素。
要求:用順序表儲存,另闢空間儲存C中元素 。

Input

輸入集合A的元素個數n(n>=0)

依次輸入A中的元素,以空格分隔。

輸入集合B的元素個數m(m>=0)

依次輸入B中的元素,以空格分隔。

Output

依次輸出C中的元素,以空格分隔。

Sample Input

4

10 5 20 6

5

5 4 3 20 1

Sample Output

10 6
#include<stdio.h>
#define  MAXSIZE 100 // 線性表的最大長度

typedef int ElemType;//ELEMENT定義為int型別

//定義結構體
typedef struct{
    ElemType data[MAXSIZE];
    int length;
}SqList;

void DifferentSet(SqList *A,SqList *B,SqList *C){
    int i=0;

    int j = 0;
    for (i=0;i<A->length;i++)
    {
        int k = 0;
        for(j=0;j<B->length;j++)
        {
            if(B->data[j] == A->data[i])
            {
                k++;
            }
        }
        if(k==0)
        {

            C->data[C->length++]=A->data[i];
        }

    }
}

void Display(SqList *L){
    	int i;
    	for(i=0;i<L->length;i++)
        printf("%d ",L->data[i]);
	}
void main()
{
	int i,j;
 	int list1_len;
    int list2_len;

    SqList *A = (SqList*)malloc(sizeof(SqList));
    A->length=0;
    scanf("%d",&list1_len);
    for(i=0;i<list1_len;i++)
    {
   		scanf("%d",&A->data[i]);
   		A->length++;
    }

    SqList *B = (SqList*)malloc(sizeof(SqList));
    B->length=0;
    scanf("%d",&list2_len);
    for(i=0;i<list2_len;i++)
    {
   		scanf("%d",&B->data[i]);
   		B->length++;
    }


    SqList *C = (SqList*)malloc(sizeof(SqList));
    C->length=0;
	DifferentSet(A,B,C);
    Display(C);
}