编写函数del(inta[],int n,int x),它的作用是删除,有序数组a中的指定元素x。

编写函数del(inta[],int n,int x),它的作用是删除,有序数组a中的指定元素x。

#include <stdio.h>
int del(int a[],int n,int x)
{
int i,j;
for(i=0;i<n;i++)
if(a[i]==x)
{
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;i--;
}
return n;
}
//以上为函数del,以下为主函数
void main()
{
int i,x,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
for(i=0;i<del(a,10,x);i++)
printf("%d ",a[i]);
}

运行示例:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-17
void del(int a[], int n, int x) {
int left=0,right=n-1,mid=0;
if (x == a[left]) {
mid = left;
}
else if (x == a[right]) {
mid = right;
}
else {
while (x>a[left] && x<a[right]) {
mid = (left + right) / 2;
if (a[mid] < x) {
left = mid;
}
else if (a[mid] > x) {
right = mid;
}
else {
break;
}
}
}

if (x == a[mid]) {
for (left = mid + 1; left < n; left++) {
a[left - 1] = a[left];
}
}

}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网