#include <string.h>
#include <stdlib.h>
#include "student.h"
void intersection(int* A, int* B, int lenA, int lenB, int** C, int* lenC)
{
/*
A表示数组A,B表示数组B,lenA表示数组A的长度,lenB表示数组
B的长度,C表示结果,lenC表示结果的长度
需要将交集存放在数组C中。
*/
/*********Begin********/
int* hash_A = (int*)malloc(100*sizeof(int));
int* hash_B = (int*)malloc(100*sizeof(int));
memset(hash_A,0,100);
memset(hash_B,0,100);
for(int i=0;i<lenA;++i)
{
hash_A[A[i]]++;
}
for(int i=0;i<lenB;++i)
{
hash_B[B[i]]++;
}
int total=0;
for(int i=0;i<100;++i)
{
if(hash_A[i]>0&&hash_B[i]>0)
total++;
}
int* result=(int*)malloc(total*sizeof(int));
int cur_index=0;
for(int i=0;i<100;++i)
{
if(hash_A[i]>0&&hash_B[i]>0)
result[cur_index++]=i;
}
*C=result;
*lenC=total;
/*********End*********/
}
#include <string.h>
#include <stdlib.h>
#include "student.h"
void intersection(int* A, int* B, int lenA, int lenB, int** C, int* lenC)
{
/*
A表示数组A,B表示数组B,lenA表示数组A的长度,lenB表示数组
B的长度,C表示结果,lenC表示结果的长度
需要将交集存放在数组C中。
*/
/*********Begin********/
int n[10]; //定义A哈希表存储点
for(int ia=0;ia<=lenA-1;ia++){
int ra=A[ia]; //定义r为中转评判
int ja=lenA-1; //定义扫描
while(ja!=-1){
if(ra==A[ja]){
n[ra]++;
ja--;
}else{
ja--;
}
}
}
int m[10]; //定义B哈希表存储点
for(int ib=0;ib<=lenB-1;ib++){
int rb=A[ib];
int jb=lenA-1;
while(jb!=-1){
if(rb==A[jb]){
m[rb]++;
jb--;
}else{
jb--;
}
}
}
for(int p=0;p<=9;p++){
if(m[p]>0&&n[p]>0){
*C[*lenC]=p;
}
*(lenC)++;
}
/*********End*********/
}
要有main()函数调用intersection()函数,并且完善输入输出细节