题目:
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
typedef struct Vector
{
int size, length;
int *data;
}Vector;
void init(Vector *vector,int size) {
vector->size = size;
vector->length = 0;
vector->data = (int *)malloc(sizeof(int) * size);
}
void expand(Vector *vector) {
int *old_data = vector->data;
vector->size = vector->size * 2;
vector->data = (int *)malloc(sizeof(int) * vector->size);
for (int i = 0; i < vector->length; i++)
{
vector->data[i] = old_data[i];
}
free(old_data);
}
void insert(Vector *vector, int loc, int value) {
if (loc < 0 || loc > vector->length) {
return ERROR;
}
if (vector->length >= vector->size) {
expand(vector);
}
for (int i = vector->length; i > loc; i++)
{
vector->data[i] = vector->data[i - 1];
}
vector->data[loc] = value;
vector->length++;
return OK;
}
void print(Vector *vector) {
for (int i = 0; i < vector->length; i++)
{
printf("%d", vector->data[i]);
if (i < vector->length-1) {
printf(" ");
}
}
}
void clear(Vector *vector) {
free(vector->data);
free(vector);
}
void campare(Vector *a, Vector *b, int m) {
int temp[m];
int count = 0;
for (int i = 0; i < a->length; i++)
{
for (int j = 0; j < b->length; j++)
{
if (a->data[i] == b->data[j]) {
temp[count] = j;
count++;
}
}
}
Vector *c = (Vector *)malloc(sizeof(Vector));
init(c, count);
for(int i = 0; i < count; i++){
insert(c, i, b->data[temp[i]]);
}
printf("%d\n",count);
print(c);
}
int main() {
Vector *a = (Vector *)malloc(sizeof(Vector));
int m;
scanf("%d", &m);
init(a, m);
for (int i = 0; i < m; i++)
{
int val;
scanf("%d", &val);
insert(a, i, val);
}
Vector *b = (Vector *)malloc(sizeof(Vector));
int n;
scanf("%d", &n);
init(b, n);
for (int i = 0; i < n; i++)
{
int val2;
scanf("%d", &val2);
insert(b, i, val2);
}
// print(a);
// print(b);
if(m > n){
campare(a, b, m);
}else{
campare(a, b, n);
}
clear(a);
clear(b);
return 0;
}