作者 by aigle / 2022-01-18 / 暂无评论
G:\CODE\C2\cmake-build-debug\C2.exe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
1 2 3 4 5 6 7 8 9 10 11 12 13 14
2 5 10 11
1 3 4 6 7 8 9 12 13 14 15 16 17 18 19#include<stdlib.h>
#include<stdio.h>
#define MAXSIZE 100
typedef struct{
int len;
int size;
int *data;
}sqlist;
int insert(sqlist * sq,int i,int x);//插入节点
void init(sqlist * sq);//创建节点
void list(sqlist sq);//打印顺序表
void andset(sqlist * a,sqlist * b,sqlist * c);//两两对比求交集int insert(sqlist * sq,int i,int x){
int j;
if(i<1||i>sq->len+1){
return -1;
}
for(j=sq->len;j>=i;j--){
sq->data[j]=sq->data[j-1];
}
sq->data[i-1]=x;
sq->len++;
return 0;
}void init(sqlist * sq){
sq->data=(int *)malloc(sizeof(int)*MAXSIZE);
sq->len=0;
sq->size=MAXSIZE;
}void list(sqlist sq){
int i;
for(i=0;i<sq.len;i++){
printf("%d ",sq.data[i]);
}
printf("\n");
}void andset(sqlist * a,sqlist * b,sqlist * c){
int i=0,j=0,k=0;
while(j<b->len&&k<c->len){
if(b->data[j]>c->data[k]){
k++;
}else if(b->data[j]<c->data[k]){
j++;
}else{
while(a->data[i]<b->data[j]&&i<a->len){
i++;
}
if(a->data[i]==b->data[j]){
int j;
for(j=i;j<a->len-1;j++){
a->data[j]=a->data[j+1];
}
a->len--;
}
k++;
j++;
}
}
}void main(){
sqlist a,b,c;
init(&a),init(&b),init(&c);
for (int i = 0; i < 20; i++) {
insert(&a,i,i);
}
for (int i = 0; i < 15; i++) {
insert(&b,i,i);
}
insert(&c,1,2),insert(&c,2,5),insert(&c,3,10),insert(&c,4,11);
list(a),list(b),list(c);
andset(&a,&b,&c);
list(a);
}
评论已关闭