本题实现在顺序表中删除一个元素。
函数接口定义:
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;int j;
for(i=0;i<*n;i++){
if(a[i]==x){
for(j=i;j<*n;j++)
a[j]=a[j+1];
(*n)--;
return 1;
}
}
return 0;
}