【題目描述】從有序順序表中删除其值在給定值s與t之間(要求是s<t)的所有元素,若s或t不合理或者順序表為空,則顯示出錯資訊并退出運作。
/*算法思想;
先尋找大于等于s的第一個元素(第一個删除的元素),
然後尋找值大于t的第一個元素(最後一個删除元素的下一個元素),
要将這段元素删除,隻需要将後面的元素前移。*/
#define MAXSIZE 100
typedef int Elemtype;
typedef struct {
int length;
Elemtype data[MAXSIZE];
}Sqlist;
bool Del_s_t2(Sqlist &L, Elemtype s, Elemtype t) {
int i, j;
if (s >= t || L.length == 0) {
return false;
}
for (i = 0; i < L.length && L.data[i] < s; i++) {//尋找大于等于s的第一個元素
if (i > L.length) {
return false;//所有元素均小于s,傳回
}
}
for (j = i; j < L.length && L.data[j]<=t; j++) {//尋找值大于t的第一個元素
for (; j < L.length; i++, j++)
{
L.data[i] = L.data[j];//前移,填補被删元素位置
}
}
L.length = i;
return true;
}