//与3同一个思想,解法一
void del_s_to_t(SeqList &L, Elemtype s, Elemtype t){
if(s >= t) return; // 如果 s 大于等于 t,则直接返回,不进行任何操作
if(L.length <= 0) return; // 如果顺序表为空,则直接返回
int num = 0;
for(int i = 0; i < L.length; i++){
if(L.data[i] < s || L.data[i] > t){
// 保留小于 s 或大于 t 的元素
L.data[num] = L.data[i];
num++;
}
}
L.length = num; // 更新顺序表的长度
}
void del_s_to_t(SeqList &L, Elemtype s, Elemtype t){
if(s >= t) return; // 如果 s 大于等于 t,则直接返回,不进行任何操作
if(L.length <= 0) return; // 如果顺序表为空,则直接返回
int num = 0; // 用于记录需要删除的元素数量
for(int i = 0; i < L.length; i++){
if(L.data[i] >= s && L.data[i] <= t){
num++; // 发现一个在区间内的元素,增加计数器
} else {
// 将不在区间内的元素前移到正确的位置
L.data[i - num] = L.data[i];
}
}
// 更新顺序表的长度,减去需要删除的元素数量
L.length -= num;
// 注意:如果 L.length 变为 0,则 L.data 数组中的所有元素都应该被视为无效
// 但在大多数情况下,我们只需要更新长度,数组本身可以保持不变
}