C語言實現順序表的基本操作

實現了使用C語言完成順序表的插入,排序(冒泡排序),刪除。

#define maxSize 100
//順序表定義
typedef struct {
    int data[maxSize];
    int length;
}Sqlist;
int main(){
    //順序表基本操作
    void CreatSqlist(Sqlist *L);
    void OutputSqlist(Sqlist *L);
    void insertElem(Sqlist *L,int x);\
    void Bubble(Sqlist *L);

    Sqlist L;
    CreatSqlist(&L);
    Bubble(&L);
    printf("輸出鏈表:\n");
    OutputSqlist(&L);
    insertElem(&L,10);
    printf("輸出鏈表:\n");
    OutputSqlist(&L);

    return 0;
}
//順序表基本操作
//創建順序表
void CreatSqlist(Sqlist *L){
    int i = 0;
    L -> length = 0;
    printf("請輸入順序表數據:\n");
    for (i = 0;i < 5; i++){
        scanf("%d",&L -> data[i]);
        L -> length++;
    }
}
//輸出順序表
void OutputSqlist(Sqlist *L){
    for(int i = 0;i <L->length;i++){
        printf("%d ",L -> data[i]);
    }
    printf("\n");
}
//順序表插入,按順序插入
int findElem(Sqlist L,int x){
    int i = 0;
    for (i = 0;i < L.length;i++){
        if(x < L.data[i]){
            return i;
        }
    }
    return i;
}
void insertElem(Sqlist *L,int x){
    int p,i;
    p = findElem(*L,x);
    for(i = L->length - 1;i >= p;i--){
        L->data[i+1] = L->data[i];
    }
    L->data[p] = x;
    (L->length)++;
}
//刪除元素
int deleteElem(Sqlist *L,int p,int *e){
    int i;
    if(p < 0 || p> L->length-1){
        return 0;
    }
    e = L->data[p];
    for(i = p;i < L->length-1;i++){
        L->data[p] = L->data[p+1];
    }
    L->length--;
    return 1;
}
//冒泡排序
void Bubble(Sqlist *L){
    for(int i =0;i < L -> length-1;i++){
        for(int j = 0;j < L->length - i - 1;j++){
            int temp;
            if(L -> data[j] > L -> data[j+1]){
                temp = L -> data[j];
                L -> data[j] = L -> data[j+1];
                L -> data[j+1] = temp;
            }
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章