最基础的顺序表——C语言

#include 
#include 
#define initsize 100
typedef struct{
    int *date;
    int maxSize,length;//数组的最大容量和当前长度 
}SqList; 

void creatList(SqList *L){//初始化顺序表 
    L->date=(int *)malloc(initsize*sizeof(int));
    if(!L->date){
        printf("存储分配错误!\n"); 
    }
    L->maxSize=initsize;
    L->length=0;
    printf("初始化成功。"); 
} 
void reallocate(SqList *L){//修改顺序表占用的空间 
    int i,newSize;
    int *newArray;
    if(L->length>0.*L->maxSize){
        newSize=2*L->maxSize; 
    }else if(L->length<0.2*L->maxSize){
        newSize=0.5*L->maxSize;
    }
    newArray=(int *)malloc(newSize*sizeof(int));// 创建新的空间 
    for(i=0;ilength;i++){
        newArray[i]=L->date[i];// 复制原来空间里的内容 
    }
    L->date=newArray;
    L->maxSize=newSize;
}
void insert(SqList *L,int i,int x){//插入 
    if(L->length==L->maxSize){
        printf("表格已满不能继续插入"); 
    }
    if(i<1||i>L->length+1){
        printf("参数值不合理"); 
    }
    if(i==L->length+1){//插到末尾的情况 
        L->date[L->length]=x;
        L->length++;
        printf("插入成功!"); 
    }else{
        int j=L->length-1; 
        for(j;j>=i-1;j--){
            L->date[j+1]=L->date[j];
        }
        L->date[i-1]=x;
        L->length++;
        printf("插入成功!");
    } 
}
int showAll(SqList L){//展示内容 
    int j=0;
    for(j;jlength==0){
        printf("空表,不能删除!");
        return 0;
    }
    if(i<1||i>L->maxSize){
        printf("i值不合理!");
        return 0; 
    }
    for(i;ilength;i++){
        L->date[i-1]==L->date[i];
    }
    L->length--;
    return L->date[i-1]; 
}
int main(int argc, char *argv[]) {
    SqList L;
    int i; 
    int a=0;
    int b=0;
    printf("初级顺序表\n");
    printf("有以下操作可选\n");
    printf("1.初始化顺序表\n");
    printf("2.在指定位置添加元素\n");
    printf("3.获得所有元素\n");
    printf("4.获得指定位置的元素\n"); 
    printf("5.删除元素并返回删除的元素 \n");
    printf("**********************************************************\n"); 
    printf("请选择你想要进行的操作!\n"); 
    printf("**********************************************************\n"); 
    while(1){
        scanf("%d",&i);
        
        switch (i){
            case 1:
                    creatList(&L);
                    break;
            case 2:
                    printf("请输入你想插入到第几个位置!\n");
                    scanf("%d",&a);
                    printf("请输入你想插入的数字!\n");
                    scanf("%d",&b);
                    insert(&L,a,b);
                    break;
            case 3:
                    showAll(L);     
                    break;
            case 4:
                    printf("请输入你想查询第几位置的元素!\n");
                    scanf("%d",&a); 
                    showOne(L,a);
                    break;
            case 5:
                    printf("请输入你想删除的元素!\n");
                    scanf("%d",&a); 
                    printf("%d",delete(&L,a)); 
                    break;
                    
        } 
    }
}

你可能感兴趣的:(最基础的顺序表——C语言)