从有序顺序表中删除其值在给定值s和t之间(要求s<t)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。
# include <stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int length;
}SqList;
void InitList(SqList &L){
for(int i=0; i<MaxSize; i++){
L.data[i]=0;
}
L.length=0;
}
void PrintList(SqList L){
for(int i=0; i<L.length; i++){
printf("%d ",L.data[i]);
}
}
//开始写主功能函数(注意本题为有序表)
bool DeleteStoT(SqList &L, int s, int 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;
}
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;
}
int main(){
printf("SqList_Test_4_From_soapcmd\n\n");
//打印标题
SqList L;
//声明顺序表
InitList(L);
//初始化顺序表
L.data[0] = 12;
L.length++;
L.data[1] = -11;
L.length++;
L.data[2] = 23;
L.length++;
L.data[3] = -4;
L.length++;
L.data[4] = -11;
L.length++;
L.data[5] = 9;
L.length++;
L.data[6] = -11;
L.length++;
//插入几个数据
PrintList(L);
//打印更改前顺序表
printf("\n");
//开始删除
int s = -10;
int t = 10;
DeleteStoT(L, s, t);
PrintList(L);
//打印更改后顺序表
return 0;
}