一.算法思想
通过遍历顺序表确定第一个大于s的元素的下标i,随后从i出发遍历确定第一个大于t的元素下标j。最后将大于t的元素往前移。
二.源代码
//删除有序顺序表在给定值S和T之间(s<t)的所有元素
void DeleteS_T(List list, int s, int t) {
//注:该顺序表为有序表
int i, j;
if (s >= t || list->Last == -1) {
printf("S,T的取值有误或表为空");
}
//找第一个大于s元素的下标
for (i = 0; i <= list->Last&&list->Data[i] < s; i++);
if (i > list->Last) {
printf("所有元素均小于s");
return;
}
//找从i开始第一个大于t元素的下标
for (j = i; j <= list->Last&&list->Data[j] < t; j++);
//若有元素比t大
if (j <= list->Last) {
//将大于t的元素往前移
while (j <= list->Last) {
list->Data[i] = list->Data[j];
i++;
j++;
}
}
list->Last = i - 1;
}