思路
因为顺序表是有序的,故只需用for循环找出第一个大于等于s的元素位置 i,再从 i 开始找大于t的元素,然后进行删除操作。
代码
bool del_st(SqList &L,ElemType s,ElemType t){
if(s>=t||L.length==0){
return false;
}
int i,j;
//找到第一个大于等于s的元素位置
for(i=0;i<L.length&&L.data[i]<s;i++);
//如果没有大于等于s的元素,则返回false
if(i>=L.length){
return false;
}
//再找大于t的第一个元素位置
for(j=i;j<L.length&&L.data[i]<=t;j++);
//开始删除
while(j<L.length){
L.data[i]=L.data[j];
i++;j++;
}
//i最后指向表尾
L.length=i;
return true;
}
总结
注意最后表长是 i