データ構造(一)手順表(学習ing)

1942 ワード

  • 定義構造
  • シーケンステーブル
  • を作成します.
  • 初期化シーケンステーブル
  • 挿入要素
  • 削除要素
  • 廃棄順序表
  • 構造を定義
    //    
    typedef int SeqType;//      
    typedef struct
    {
        SeqType *elem;//       (       )
        int length;//    
        int listsize;//         
    }SqList;
    typedefの使い方:単純なマクロの代わりに、タイプのエイリアスを定義し、ポインタ型を同時に宣言する複数のオブジェクトとして使用することができます.
                           プラットフォームに関係のないタイプをtypedefで定義します.
                           複雑な声明のために新しいシンプルなエイリアスを定義します.(詳細は参照可能ですhttp://blog.csdn.net/superhoy/article/details/53504472)
     
    定義操作
    順序表を作成
    /*
    *     
    */
    SqList(creatList_sq)()
    {
        SqList *List = (SqList *)malloc(sizeof(SqList));
        return *List;
    }
    初期化手順表
    /*
    *      
    *  1,       
    *  0,       
    */
    int initList_sq(SqList &L)
    {
        L.elem = (SeqType *)malloc(sizeof(SeqType)*LIST_INIT_SIZE);
        if(!L.elem)
            return 0;//      ,      
        L.length = 0;//       
        L.listsize = LIST_INIT_SIZE;//      ,        
        return 1;
    }
    要素を挿入
    /*
    *     
    *           
    */
    int insert_sq(SqList &L,inr index,SeqType val)
    {
        if(index>L.length)
        {
            //               
            printf("               ");
            return 0;
        }
        if(index<0)//     ,     
        {
            index=L.length;
        }
        if(L.length==L.listsize)
        {
            //            ,           
            SeqType* newBase = (SeqType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(SeqType));//        
            if(!newBase){
                //        
                return 0;
            }
            L.elem=newBase;
            L.listsize +=LISTINCREMENT;
        }
        //         ,index         
        for(int i=L.length;i>index;i--){
            L.elem[i]=L.elem[i-1];//    
        }
        L.elem[index]=val;//    
        L.length++;
        return 1;
    }
    //realloc(void *__ptr, size_t __size):           ,    malloc()            。
    
    ブログを参照してください:https://blog.csdn.net/flueky/article/details/52711668