要求以较高的效率实现删除线性表中元素值在x~y(x和y自定)之间的所有元素。
#include<stdio.h>
#include<stdlib.h>
#define X 10
#define Y 30
#define N 20
int A[N]={2,5,15,30,1,40,17,50,9,21,32,8,41,22,49,31,33,18,80,5};
void del(int *A,int *n,int x,int y)
{
int i,j=0;
for(i=0;i<*n;i++)
{
if(A[i]>y||A[i]<x)
A[j++]=A[i];
}
*n=j;
}
void output(int *A,int n)
{
int i;
printf("\n数组有%d个元素:\n",n);
for(i=0;i<n;i++){
printf("%3d",A[i]);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
int main()
{
int n;
n=N;
output(A,n);
del(A,&n,X,Y);
output(A,n);
return 0;
}
运行结果