本题实现在顺序表中删除一个元素。
函数接口定义:
int del(int a[],int *n,int x);
其中 a
是顺序表, *n
是数组中元素的个数。 x
是待删除的元素。返回值为1时表示删除成功,0表示表中无x元素
裁判测试程序样例:
#include <stdio.h>
#define N 10
int del(int a[],int *n,int x);
int main()
{
int a[N],n,i,x,flag;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
flag=del(a,&n,x);
if(flag)
{
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
else
printf("no %d",x);
return 0;
}
/* 请在这里填写答案 */
输入样例:
5
3 1 8 5 6
8
输出样例:
3 1 5 6
代码实现:
int del(int a[],int *n,int x)
{
int i=0,j=0,flag=0;
for(i=0;i<*n;i++)
{
if(a[i]==x){flag=1;j=i;}
}
for(i=j;i<*n;i++)
{
a[i]=a[i+1];
}
*n=*n-1;
return flag;
}