昨天有点懒!立正挨打不还手!
题目
从有序顺序表中删除其值在给定值s和t之间(要求s<t)的所有
元素若s或t不合理或顺序表为空,则显示出错信息并退出运行。
代码如下
#include <iostream>
using namespace std;
#define Elemtype int
#define maxsize 50
typedef struct Sqlist
{
Elemtype data[maxsize];
int length=0;
}Sqlist;
Sqlist del(Sqlist L,int s,int t)
{
int first;
int last;
for(int i=0;i<L.length;i++)
{
if(L.data[i]>s)
{
first=i;
break;
}
}
for(int j=L.length-1;j>0;j--)
{
if(L.data[j]<t)
{
last=j;
break;
}
}
int i=first;
int j=last;
for(int k=0;k<L.length-last-1;k++)
{
L.data[first++]=L.data[++last];
}
L.length=L.length-(j-i+1);
return L;
}
int main()
{
struct Sqlist L;
int n;
cout<<"请输入数据个数"<<endl;
cin>>n;
if(n<=0)
{
cout<<"出错"<<endl;
return 0;
}
else
{
cout<<"输入有序表值"<<endl;
int num;
for(int i=0;i<n;i++)
{
cin>>num;
L.data[i]=num;
L.length++;
}
int s,t;
cout<<"请输入删除值区间"<<endl;
cin>>s>>t;
if(s>t||t<L.data[0]||s>L.data[L.length-1])
return 0;
else
L=del(L,s,t);
cout<<"删除后数组"<<endl;
for(int i=0;i<L.length;i++)
cout<<L.data[i]<<" ";
cout<<endl;
}
}
这里的题目比较简单,还只是有序顺序表而已,给操作带来了很
多的便捷性。
明天见!