C語言利用順序表求兩個集合的差集
阿新 • • 發佈:2018-12-12
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); }