順序表の例(全)

6502 ワード

シーケンステーブルの初期化、追加、挿入、削除などの機能の例
プロジェクトは全部で4つのファイル1.Enttity.hを含みます.リニアテーブルの要素の種類を宣言します.基本データタイプであっても良いし、構造体2.SeqList.h:線形テーブル構造体を定義し、グローバルマクロ定義を宣言し、関数の声明3.SeqList.c:具体的な関数実現4.main.c:テストファイル
ブログ記事を参照:http://www.cnblogs.com/laojie4321/archive/2012/03/30/2425015.html ブログ記事を参照:http://blog.163.com/jiaoruijun07@126/blog/static/689432782045246409/
Enttity.h
    typedef struct{
        char key[15];   //      
        char name[20];
        int age;
    } DATA; //                    
SeqList.h
    /*
           :            

    */
    #include 
    #include 
    #include "Entity.h"
    #define MAXSIZE 100 //         

    typedef struct {
        DATA ListData[MAXSIZE + 1]; //        (         1     )
        int ListLen;                //       (    );   0,      
    } SeqListType;

    void SeqListInit(SeqListType *SL);                      //      
    int SeqListLength(SeqListType *SL);                     //           
    int SeqListAdd(SeqListType *SL, DATA data);             //          
    int SeqListInsert(SeqListType *SL, int n, DATA data);   //          
    int SeqListDelete(SeqListType *SL, int n);              //          
    DATA *SeqListFindByNum(SeqListType *SL, int n);         //         
    int SeqListFindByCont(SeqListType *SL, char *key);      //       
    int SeqListAll(SeqListType *SL);                        //      
SeqList.
    /*    :         */

    #include "SeqList.h"

    /*        */
    void SeqListInit(SeqListType *SL){
        SL->ListLen = 0;
    }

    /*           */
    int SeqListLength(SeqListType *SL){
        return (SL->ListLen);
    }

    /*           */
    int SeqListAdd(SeqListType *SL, DATA data){
        if(SL->ListLen  >= MAXSIZE){ //      
            printf("             ");
            return 0; //    
        }

        SL->ListData[++SL->ListLen] = data; //          (ListLen+1)   

        return 1;//    
    }

    /*              */
    int SeqListInsert(SeqListType *SL, int n, DATA data){
        int i;

        if(SL->ListLen  >= MAXSIZE){ //      
            printf("             
"); return 0; } if(n < 1 || n > SL->ListLen){ printf("
"); return 0; } for(i = SL->ListLen; i>=n; i--){ // SL->ListData[i+1] = SL->ListData[i]; } SL->ListData[n] = data; // SL->ListLen++; // return 1; } int SeqListDelete(SeqListType *SL, int n){ int i; if(n < 1 || n > SL->ListLen+1){ printf("
"); return 0; } for(i=n; iListLen; i++){ // SL->ListData[i] = SL->ListData[i + 1]; } SL->ListLen--; return 1; } DATA *SeqListFindByNum(SeqListType *SL, int n){ if(n < 1 || n > SL->ListLen+1){ printf(" "); return NULL; } return &(SL->ListData[n]); // } int SeqListFindByCont(SeqListType *SL, char *key){ int i; for(i = 0; i <= SL->ListLen; i++){ if(strcmp(SL->ListData[i].key, key) == 0){ return i; } } return 0; // }
メール.
/*     :      */
#include 
#include "SeqList.h"

/*        */
int SeqListAll(SeqListType *SL){
    int i;
    for(i = 0; i <= SL->ListLen; i++){
        //       0,     0         
        printf("(%s %s %d) 
", SL->ListData[i].key, SL->ListData[i].name, SL->ListData[i].age); } return 0; } int main(void){ int i, k; SeqListType SL; // DATA data, *data1; // char key[15]; // SeqListInit(&SL); // do{ printf(" : "); fflush(stdin); // scanf("%s %s %d", &data.key, &data.name, &data.age); if(data.age){ // 0 if(!SeqListAdd(&SL, data)){// break; // } }else{ // 0 break; } }while(1); printf(" :
"); SeqListAll(&SL); while(1){ fflush(stdin); printf("


1. \t2. \t3. \t4. \t5. \t6. \t7. \t8.
:"); scanf("%d", &k); if(k == 8){ break; } switch(k){ case 1: printf(" :"); scanf("%d", &i); data1 = SeqListFindByNum(&SL, i); printf(" :(%s %s %d)
", data1->key, data1->name, data1->age); break; case 2: printf(" key( ):"); scanf("%s", &key); i = SeqListFindByCont(&SL, key); if(i == 0){ printf(" !"); break; } data1 = SeqListFindByNum(&SL, i); printf(" : %d , :(%s %s %d)
", i, data1->key, data1->name, data1->age); break; case 3: printf(" :"); scanf("%s %s %d", &data.key, &data.name, &data.age); SeqListAdd(&SL, data); break; case 4: printf(" :"); scanf("%d %s %s %d", &i, &data.key, &data.name, &data.age); SeqListInsert(&SL, i, data); break; case 5: printf(" :"); scanf("%d", &i); SeqListDelete(&SL, i); break; case 6: printf("-----%d------
", SeqListLength(&SL)); break; case 7: SeqListAll(&SL); break; } } return 0; }
個人ブログへようこそいらっしゃいました.http://ay2626.me