データ構造の順序表の作成、挿入、削除、位置決め

5566 ワード

リニアテーブルの基本操作
  • 初期化-空の線形テーブルSqList Init(SqList*L)
  • を構築する.
  • 挿入-線形テーブルのi番目の要素の前に、新しい要素SqList Insert(SqList*L,int i,int e)
  • を挿入する.
  • 削除-第iの要素SqListDeleteを削除(SqList*L,int i,int*)
  • 位置決め-指定要素の位置SqListLocate(SqList*L,int e)を求めて具体的に
  • を実現します.
  • リニアテーブル記憶構造記述(構造体)
  • #define INIT_SIZE 100
    #define INCREMENT 10
    
    typedef struct
    {
        int *elem;
        int length;
        int listsize;
    }SqList;
  • 初期化
  • int SqListInit(SqList *L)
    {
        L->elem=(int *)malloc(INIT_SIZE*sizeof(int));   //       
        if(!L->elem)
            return 0;
        L->length=0;
        L->listsize=INIT_SIZE;   //      
        return 1;
    }
  • 挿入
  • int SqListInsert(SqList *L,int i,int e)
    {
        int j;
        int *newbase;
        if(i<1 || i>L->length+1)   //       
            return 0;
        if(L->length>=L->listsize)   //        
        {
            //      
            newbase=(int *)realloc(L->elem,(L->listsize+INCREMENT)*sizeof(int));
            if(!newbase)   //        
                return 0;
            L->elem=newbase;
            L->listsize +=INCREMENT;
        }
        for(j=L->length-1;j>=i-1;j--)   //              
        {
            L->elem[j+1]=L->elem[j];
        }
        L->elem[i-1]=e;   //  e
        ++L->length;   //     1
        return 1;
    }
  • 削除
  • int SqListDelete(SqList *L,int i,int *e)
    {
        int j;
        if(i<1 || i>L->length)   //       
            return 0;
        *e=L->elem[i-1];   //         e
        for(j=i-1;jlength-1;j++)   //         
        {
            L->elem[j]=L->elem[j+1];
        }
        --L->length;   //   1
        cout<<"       "<"  "<<*e<<"    "<return 1;
    }
  • 位置決め
  • int SqListLocate(SqList *L,int e)
    {
        int i;
        while(i<=L->length&&L->elem[i-1]!=e)
            i++;
        if(i<=L->length)
        {
            cout<<"  "<"         "<return 1;
        }
        else
        {
            cout<<"         "<"   "<return 0;
        }
    }
    ソースリンクhttp://download.csdn.net/detail/qq_28397005/98122882は転載して声明を下さい、ありがとうございます.