无序顺序表的范围删除


  1. 从无序顺序表中删除其值在给定值st之间的所有元素(包含st并要求s<t),
  2. st不合理或顺序表为空,则显示出错信息并退出运行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "preset.h"

//listBatchDelete范围删除
bool listBatchDelete(SqList &sql, int s, int t) {
if (s > t || sql.length == 0 || t < sql.elem[0] || s > sql.elem[sql.length - 1]) {
return false;
}

int k = 0;
for (int i = 0; i < sql.length; ++i) {
if (s <= sql.elem[i] && sql.elem[i] <= t) {
k++;
} else {
sql.elem[i - k] = sql.elem[i];
}
}
sql.length = sql.length - k;
return true;
}

int main () {
SqList sql = {{1, 7, 2, 1, 4, 1, 6, 5, 1, 9}, 10};
cout << "Current SqList: "; print(sql);
int s, t; cin >> s >> t;
if (listBatchDelete(sql, s, t)) cout << "batchDelete the SqList: "; print(sql);
else cout << "error" << endl;
return 0;
}