C2

作者 by aigle / 2022-01-18 / 暂无评论

#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){
    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);


}

评论已关闭