题目:
从顺序表中删除其值在给定值s与t之间(包含s和t,要求s<t) 的所有元素
若s或t不合理,或顺序表为空,则显示出错误信息并退出运行
#include<stdio.h>
typedef int ElemType;
//假设表的元素类型为ElemType
typedef struct
{
ElemType data[50];
int length;
}SqList;
//自己代码
bool del_s_to_t(SqList &l,ElemType s,ElemType t){
int k = 0;//记录不在此范围内的元素
if(s>t)
return false;//不符合要求
for(int i =0;i<l.length;i++){
if(l.data[i]<s || l.data[i]>t) {
l.data[k] = l.data[i];
k++;
}
}
l.length = k;
return true;
}
/*
从前向后扫描顺序表L,k记录s到t之间的元素个数,值不在范围内的,前移k位,否则,k++
*/
bool Del_s_t(SqList &L,ElemType s,ElemType t){
//删除顺序表L中值在给定值S与T之间的元素
int i,k=0;
if(L.length==0||s>=t)
return false;//线性表为空,或者s,t不合法,返回
for(i=0;i<L.length;i++){
if(L.data[i]>=s&&L.data[i]<=t)
k++;
else
L.data[i-k]=L.data[i];//当前元素前移K个位置
}
L.length-=k;
return true;
}
main(){
SqList l;
l.length=5;
l.data[0]=1;
l.data[1]=3;
l.data[2]=3;
l.data[3]=7;
l.data[4]=5;
Del_s_t(l,2,4) ;
for(int i=0;i<l.length;i++)
{
printf("%d\n",l.data[i]);
}
}