1.给出函数int remove_all(int* a,int a,int v),要求复杂度为O(n), 它将数组a[0,n]中所有等于v的整数删除,返回剩余元素的个数,假设返回值为m,则剩余元素保存在a[0,m]中 /**************************************************************************/ /*================================================================*/ /**************************************************************************/ #include<iostream> using namespace std; #define SIZE 10 //数组长度; int remove_all(int* a,int n,int v) //题目要求设计函数; { int i,m; m=n; for(i=0;i<m;i++){ if(a[i]==v){ a[i]=a[m-1]; m--; i--; } } return m; } int main() { int num,left; int array[SIZE]={9,6,3,5,4,2,3,5,8,5}; //初始化数组; cout<<"原数组为:"<<endl; for(int i=0;i<SIZE;i++){ //输出原数组; cout<<array[i]<<" "; } cout<<endl<<"请输入要删除的数:"; cin>>num; left=remove_all(array,SIZE,num); //题中函数的运用; cout<<endl<<"删除"<<num<<"后数组为:"<<endl; for(i=0;i<left;i++){ //输出删除后数组; cout<<array[i]<<" "; } cout<<endl<<endl<<"数组剩余个数为:"<<left<<endl<<endl; return 0; } /***************************************************************************/ /*================================================================*/ /***************************************************************************/ |
|