分享

给出函数int remove_all(int* a,int a,int v),要求复杂度为O(n),

 BUPT-BYR 2010-12-08

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;

}

      

/***************************************************************************/

/*================================================================*/

/***************************************************************************/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多