C 数据结构 --- 线性表(顺序表)

#include <stdio.h>

#include <stdlib.h>

#define MAXLENGTH 1000

typedef struct{

   int total;

   int date[MAXLENGTH];

}lineList;



void showList(lineList* list){

    int i;

    if(list->total ==0){

       printf("空的线性表\n");

       return;

    } 

    printf("当前线性表状态:");

    for(i=0;i<list->total;i++){

        printf("%d\t",list->date[i]);

    }

    printf("\n");

}



void outPut(lineList* list){

    system("cls");

    printf("-- 顺序表 --\n");

    printf("a、 - 添加节点         i、 - 插入节点\n");

    printf("d、 - 删除节点         e、 - 退出\n");

    showList(list);

}

lineList* createList(){

    

    lineList* list = (lineList*)malloc(sizeof(lineList));

    list->total = 0;

    return list;

}



void appendNode(lineList* list,int val){



    if(list->total < MAXLENGTH ){

        list->date[list->total] = val;

        list->total++;

    }

}



void insertNode(lineList* list,int val ,int pos){



    int i;

    if(pos<0 || pos>list->total){

        printf("插入位置不正确");

    }



    for(i=pos;i<list->total;i++){

       

        list->date[i+1] = list->date[i];

    }

    list->date[pos] = val;

    

    list->total += 1;



}

void deleteNode(lineList* list, int pos){



    if(pos<0 || pos > list->total){

        

        printf("所删除的节点不存在");

    

    }else{

         

        int i;

        for(i=pos;i<list->total;i++) 

            list->date[i] = list->date[i+1];

        list->total--;

    }

}

void main(){



    int key, pos;

    char act;

    lineList* myList = createList();

    while(1){

        outPut(myList);

        printf("请操作:");

        act = getchar();

        fflush(stdin);

        switch(act){

           case 'a':

                printf("请输入要添加的 KEY");

                scanf("%d",&key);

                appendNode(myList,key);

                break;

           case 'i':

                printf("请输入要插入的 KEY 和 POS");

                scanf("%d %d",&key,&pos);

                insertNode(myList,key,pos);

                break;

           case 'd':

                printf("请输入要删除的 POS");

                scanf("%d",&pos);

                deleteNode(myList,pos);

                break;

           case 'e':

                exit(0);

                outPut(myList);

                fflush(stdin);

                break;

           default:

               break;

        }

        

    }

}

顺序表 是把线性表中的所有元素按照其逻辑一次存储到指定的一块连续的存储空间···

你可能感兴趣的:(数据结构)