#include
using namespace std;
int del(int num,int a[]);
int main()
{
int n,del_num;
int a[100];
cout<<"请往输入数据(100以内),并以0结束"<for(int i=0;i!=100;i++)
{
cin>>a[i];
if(a[i]==0)
break;
}
cout<<"要删除的数:"<cin>>del_num;
//删除数组中的指定元素
del(del_num,a);
for(int i=0;i!=100;i++)
{
cout< if(a[i]==0)
break;
}
cout<}
/*
*根据输入num删除数组中的元素,删除方式为:数组往前迁移的方式,该算法没有
*额外开辟数组进行数组搬迁,空间复杂度较优
*/
int del(int num,int a[])
{
int pos=-1;
for(int i=0;i!=100;i++)
{
if(a[i]==num)
{//找到要删除元素的第一次出现的位置,若没有出现则pos=-1,直接返回
pos=i;
break;
}
if(a[i]==0)
break;
}
//数组中没有要删除的元素,直接返回
if(pos<0)
return 0;
//将数组迁移
for(int p=pos,q=pos+1;p!=100;p++)
{
if(a[p]==0)
return 0;
while(q!=100)
{//该循环将后面出现的要删除的数一并跳过,实现删除
if(a[q]!=num)
break;
if(a[q]==0)
break;
q++;
}
a[p]=a[q];
q++;
}
return 0;
}
建立数组
从键盘读入整数存放数组中
从键盘读入要删除的元素
循环判断指定元素,若存在,利用memcpy将其后面的数据向前移动,长度减一