資料結構c語言實現順序表基本操作

weixin_33807284發表於2019-01-27
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define ElemType int

typedef struct{
    ElemType Data[MAXSIZE];
    int length;
}seqList;

void initList(seqList *L){
L->length = 0;
} 

int insertList(seqList *L,int pos,ElemType ele){
    int i;
    if(pos<0||pos>=MAXSIZE){
        return 0;
    }
    else{
        for(i=L->length;i>=pos;i--){
            L->Data[i+1]=L->Data[i];
        }
        L->Data[pos] = ele;
        L->length++;
      return 1;
  }
}
int getElem(seqList L,int pos){
    int i;
    if(pos<0||pos>=L.length){
        return 0;
    }
    else{
        return L.Data[pos];
    }
}
int DeleteList(seqList *L,int pos){
    int i;
    if(pos<0||pos>=MAXSIZE){
        return 0;
    }
    else{
        for(i=pos;i<L->length;i++){
            L->Data[i-1] = L->Data[i];
        }
        L->length--;
        return 1;
    }
}
int isEmpty(seqList L){
    if(L.length==0){
        return 1;
    }
    else{
        return 0;
    }
}
int LocateElem(seqList *L,ElemType ele){
    int i;
    for(i=0;i<L->length;i++){
        if(L->Data[i]==ele)
            return i;
    }
    return -1;
}
int printList(seqList *L){
    int i;
    for(i=0;i<L->length;i++){
        printf("%d ",L->Data[i]);
    }
}
int main(){
    seqList L;
    char c;
    printf("===========請輸入您的選擇=============\n");
    printf("1.初始化順序表\t\t 2.新增元素\t\t 3.刪除元素\n");
    printf("4.列印元素\t\t 5.查詢元素位置\t\t #.退出\n");
    while(scanf("%c",&c)!='#'){
        getchar();
        if(c=='1'){
            initList(&L);
            printf("初始化成功\n"); 
        }
        else if(c=='2'){
            int ele;
            char d;
            int i=0;
            printf("請輸入您要新增的元素:\n");
            scanf("%d",&ele);
            insertList(&L,i,ele);
            i++;
            printf("是否停止新增元素n/y:\n");
            getchar();
            d=getchar();
            while(d=='n'){              
                scanf("%d",&ele);
                getchar();
                insertList(&L,i,ele);
                i++;
                printf("是否停止新增元素n/y:\n");
                d=getchar();
            }
            getchar();
        }
        else if(c=='3'){
            int pos;
            char d;
            printf("請輸入您要刪除的位置:\n");
            scanf("%d",&pos);
            DeleteList(&L,pos);
            printf("是否停止刪除N/Y:\n");
            getchar();
            while(scanf("%c",&d)=='n'){
                getchar();
                scanf("%d",&pos);
                DeleteList(&L,pos);
                printf("是否停止刪除n/y:\n");             
            }
            getchar();
            printf("請輸入您的選擇:\n");
        }
        else if(c=='4'){
            printList(&L);
            getchar();
            }
        else if(c=='5'){
            int quele;
        printf("請輸入您要查詢的元素:\n");
        scanf("%d",&quele);
        int a = LocateElem(&L,quele);
        printf("%d\n",a);
        getchar();
    }
    else if(c=='#'){
        break;
    }
    else{
        printf("請輸入合法的選擇:\n");
        getchar();
    }
} 
}

相關文章