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;
        }
        
    }
}

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

posted @ 2012-09-20 00:21  ﹏Sakura  阅读(191)  评论(0编辑  收藏  举报