2-6 顺序表(删除)
分数 6
作者 邵煜
单位 宁波财经学院
已知一组数据,采用顺序存储结构存储,其中所有的元素为整数。设计一个算法,删除元素值在[x,y]之间的所有元素
输入格式:
输入包含三行数据,第一行是表中元素个数,第二行是顺序表的各个元素,第三行是区间x和y。
输出格式:
删除元素值在[x,y]之间的所有元素后,输出新的顺序表。(最后无空格)
输入样例:
在这里给出一组输入。例如:
1 2 3
| 10 55 11 9 15 67 12 18 33 6 22 10 20
|
输出样例:
在这里给出相应的输出。例如:
答案
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #include <iostream> using namespace std;
typedef struct { int *data; int length; } sqList;
void initList(sqList &L, int n) { L.data = new int[n]; L.length = 0; }
void deleteElem(sqList &L, int i) { for (int j = i; j < L.length-1; ++j) { L.data[j] = L.data[j+1]; } L.length--; }
int main() { int n; cin >> n; sqList L; initList(L, n); for (int i = 0; i < n; ++i) { cin >> L.data[i]; L.length++; }
int x, y; cin >> x >> y; int i = 0; while (i != L.length) { if (L.data[i] >= x && L.data[i] <= y) { deleteElem(L, i); } else { i++; } } for (int j = 0; j < L.length; ++j) { if (j != 0) { cout << " "; } cout << L.data[j]; } }
|