顺序表区间元素的删除
2.1 问题描述
若一个顺序表L,其中所有的元素为正整数。设计一个程序,删除元素值在[x,y]之间的所有元素后输出该顺序表。注意保持元素顺序不变。
输入
三行数据。
第一行是顺序表的元素个数(不超过20),第二行是顺序表的元素(空格隔开),第三行是x和y。
输出
删除元素值在[x,y]之间的所有元素后的顺序表。空格隔开
样例输入
10
5 1 9 10 67 12 8 33 6 2
3 10
样例输出
1 67 12 33 2
#include
int main()
{
int a[20];
int b[20];
int n,i,x,y,m=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d%d",&x,&y);
for(i=0;i {
if(a[i]y)
{
b[m]=a[i];m++;
}
}
for(i=0;i<m;i++)
printf("%d ",b[i]);
return 0;
}
我是初学者...
大佬请详细讲讲这串代码的算法设计思路和流程图
我在旁边好好学习
这代码错了
for(i=0;i {
if(a[i]y)
{
b[m]=a[i];m++;
}
}
这不符合语法
正确的思路是,假设数组长度是N,删除x,y之间的元素
那么从x开始,到N-y+x-1为止,以i作为循环变量将数组的i+y-x拷贝到i即可。
最后输出0~N-y+x-1之间的元素