- 방법 1:
- 시퀀스 테이블 끝에 저장된 데이터 요소를 삭제합니다. 코드는 다음과 같습니다.
- 샘플 코드:
int delete_seq_list_1(list_t *seq_list){
if(NULL == seq_list){
printf("入参为NULL\n");
return -1;
}
if(0 == seq_list->count){
printf("顺序表为空,删除失败\n");
return -1;
}
seq_list->count--;
return 0;
}
-
지침:
-
1. 형식 매개변수가 데이터 요소 삭제 기능이 있는 함수에 전달된 후 이를 수행해야 합니다
入参合理性检查
. -
2. 아직은 판단이 필요합니다
顺序表所存储的数据元素是否为空
. -
3.
count是计数的变量
,每次删除一个数据元素后,需要减1
, 여기易忽略
; -
방법 2:
-
시퀀스 테이블의 어느 위치에서나 데이터 요소를 삭제하려면 코드는 다음과 같습니다.
-
샘플 코드:
int delete_seq_list_2(list_t *seq_list,int pos){
if(NULL == seq_list){
printf("入参为NULL\n");
return -1;
}
if(0 == seq_list->count){
printf("顺序表为空,删除失败\n");
return -1;
}
if( pos < 0 || pos >= seq_list->count){
printf("删除位置不合理,删除失败\n");
return -1;
}
int i = pos;
while(i < seq_list->count-1){
seq_list->a[i] = seq_list->a[i+1];
i++;
}
seq_list->count--;
return 0;
}
- 지침:
- 1. 방법 1과 동일: 형식 매개변수가 데이터 요소 삭제 기능이 있는 함수에 전달된 후 완료되어야 합니다
入参合理性检查
. - 2. 방법 1과 동일: 아직 판단이 필요합니다
顺序表所存储的数据元素是否为空
. - 3. 삭제될 데이터 요소를 판단할
位置在顺序表中是否合理
필요가 있습니다 .区别在任意位置插入数据元素的位置合理性检查
두 요소는 약간 다릅니다越界操作,所导致运行结果出错
. - 4.
while循环或者for循环
삭제할 데이터 요소의 위치를 찾은 후 이 위치 이후의 모든 데이터 요소의依次向前挪动一个位置
목적은 다음과 같습니다删除所指定的待删除位置
. - 5. 지정된 위치의 데이터 요소를 삭제한 후,
记得count减1
;