将数组里面零元素置后,其它元素相对位置保持不变

/*
一个数组里面存储了一些数字,其中有0元素和非0元素,要求经过处理,
数组前面存储的是非0元素,后面是0元素,且非0元素保持原有顺序。然后输出。
实例:11111000003333333
处理结果:11111333333300000
*/

#include<iostream>
using namespace std;
void dealArray(int *p, int n)
{
 int *tmpArray = new int[n];
 for(int i = 0; i < n; i++)
 {
  tmpArray[i] = p[i];
 }
 for(int j = 0; j < n; j++)
 {
  p[j] = 0;
 }
 for(int k = 0 ,m = 0; k < n; k++)

 {
  if(0 != tmpArray[k])
  {
   p[m++] = tmpArray[k];//
  }
 }
 delete[] tmpArray;
}
int main()
{
 int a[]={1,1,1,1,1,0,0,0,0,0,3,3,3,3,3,3,3,3};
 //未处理的数组数据
 for(int i = 0; i < sizeof(a)/4; i++)
 {
  cout<<a[i];
 }
 cout<<endl;
 dealArray(a, sizeof(a)/4);
 //处理后数据显示
 for(int j = 0; j < sizeof(a)/4; j++)
 {
  cout<<a[j];
 }
 cout<<endl;

 //cout<<sizeof(a)<<endl;
 return 0;
}

posted @ 2014-03-12 12:54  残风一月  阅读(699)  评论(0编辑  收藏  举报