【数据结构—顺序表】删除在给定值s和t之间的所有元素
描述:设有一个顺序表(a0,a1,…,an-1),元素中可能存在重复的值,元素是无序的,输入2个给定值s和t(s≤t),从顺序表中删除其值在s与t之间(即s≤ai≤t)的所有元素,输出删除后的顺序表;注意如果s或t的值不合理(s>t),则输出“s or t error!”并退出运行。要求:该删除函数不属于类的成员函数,定义一个独立的函数,函数返回值为布尔型,删除成功时返回true, 删除失败时返回false;通过使用顺序表的基本操作(即成员函数)实现。
#include<iostream>
using namespace std;
bool shanchu(int s,int t,int a[],int *n){
if(n==0){
return false;
}
int i,j;
j=*n;
for(i=0;i<j;i++){
if(a[i]>=s&&a[i]<=t){
for(i;i<j;i++){
a[i]=a[i+1];
}
j--;
i=-1;
}
}
*n=j;
return true;
}
void shuchu(int a[],int n){
cout<<"{ ";
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<"}";
}
int main(){
int a[20];
int n,s,t;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
cin>>s>>t;
if(s>t){
cout<<"s or t error!";
return 0;
}
shanchu(s,t,a,&n);
shuchu(a,n);
}
测试数据:
8
5 2 9 12 3 0 1 6
6 10
运行结果