- 方法 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
。