データ構造学習シリーズの数列表の2つの挿入方法

  • 方法 1:
  • シーケンス テーブル末端插入データ要素のコードは次のとおりです。
  • サンプルコード:
int insert_seq_list_1(list_t *seq_list,int data){
    
    

    if(NULL == seq_list){
    
    

        printf("入参为NULL\n");

        return -1;

    }

    if(N == seq_list->count){
    
    

        printf("顺序表已满,插入失败\n");

        return -1;

    }

    seq_list->a[seq_list->count].num = data;
    seq_list->count++;

    return 0;

}
  • 予防:

  • 1. 仮パラメータがデータ要素を挿入する関数に渡された後、それを行う必要があります入参合理性检查

  • 2. 現時点ではまだ判断する必要があります顺序表所存储的数据元素是否已满

  • 3. このサンプルコードではcount是计数的变量每次插入一个数据元素后,需要加1、ここに易忽略;

  • 方法 2:

  • 任意位置插入シーケンス テーブルのデータ要素のコードは次のとおりです

  • サンプルコード:

int insert_seq_list_2(list_t *seq_list,int pos, int data){
    
    


    if(NULL == seq_list){
    
    

        printf("入参为NULL\n");

        return -1;

    }
    if(N == seq_list->count){
    
    

        printf("顺序表已满,插入失败\n");

        return -1;

    }
    if( pos < 0 || pos > seq_list->count){
    
    

        printf("插入位置不合理,插入失败\n");

        return -1;

    }

    int i = 0;
    i = seq_list->count-1;

    while(i >= pos){
    
    

        seq_list->a[i+1] = seq_list->a[i];

        i--;

    }

    seq_list->a[pos].num = data;
    seq_list->count++;

    return 0;
}
  • 予防:
  • 1. 方法 1 と同じ: データ要素を挿入する機能を持つ関数に仮パラメータを渡した後、それを行う必要があります入参合理性检查
  • 2. 方法 1 と同じ: この時点ではまだ判断する必要があります顺序表所存储的数据元素是否已满
  • 3. 挿入するデータ要素を決定します位置在顺序表中是否合理
  • while循环或者for循环4.このメソッドは、挿入されるデータ要素の位置、この位置のデータ要素とこの位置の後のすべてのデータ要素を見つけるために使用できます依次向后挪动一个位置。目的は腾出所指定的待插入位置;です。
  • 5. 挿入するデータ要素の値を位置の値、つまり cover に割り当てます记得count加1

おすすめ

転載: blog.csdn.net/qq_41878292/article/details/132639046