第二章

用线性表创建集合,求交集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class 顺序表实现集合交集 {
//假定有二个长度为100的顺序表实现集合,求交集
static int a[]=new int[100],b[]=new int[100],c[]=new int[100];
static int size[]=new int[10];//存放每个线性表的长度
static void insert(int arr[],int x,int type){
int len=size[type];
for(int i=0;i<len;i++){
if(x==arr[i]) return;
}
arr[len]=x;
size[type]++;
}
static void print(int arr[],int type){
int len=size[type];
for(int i=0;i<len;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
static void intersection(int arr1[],int arr2[],int arr3[],int type1,int type2,int type3){
int lenA=size[type1];
int lenB=size[type2];
int lenC=size[type3];
for(int i=0;i<lenA;i++){
int x=arr1[i];
for(int j=0;j<lenB;j++){
if(x==arr2[j]){
arr3[lenC++]=x;
break;
}
}
}
size[type3]=lenC;
}
public static void main(String[] args) {
int testA[]={1,2,3,3,4,5};
int testB[]={4,5,6,6};
for(int i=0;i<testA.length;i++){
insert(a,testA[i],0);
}
System.out.println("集合A的内容为:");
print(a,0);

for(int i=0;i<testB.length;i++){
insert(b,testB[i],1);
}
System.out.println("集合B的内容为:");
print(b,1);

intersection(a,b,c,0,1,2);
System.out.println("AB交集为");
print(c,2);
}
}