题解 | 数组元素处理
数组元素处理
http://www.nowcoder.com/practice/bb840c11be674d01b582847a6921d384
#include using namespace std;
void func(int* p, int n);
int main() {
int arr[6] = { 0 };
for (int i = 0; i < 6; i++) {
cin >> arr[i];
}
func(arr, 6);
for (int i = 0; i < 6; i++) {
if (i == 5) {
cout << arr[i] << endl;
}
else {
cout << arr[i] << " ";
}
}
return 0;
}
void func(int* p, int n) {
int id = 0; //先进行初始化 //始终指向数组中第一个0
for(int i = 0; i < n; i++)
{
if(p[i] != 0)
{
int temp = p[i]; //若i所指向的数组中的数不为0,执行
p[i] = p[id]; //将指向id的数组中内容与i位置内容进行交换,
//最初i与id都在第一位,因此无法交换不操作
p[id++] = temp; //然后id所在位置右移,再进行下一轮,也就是i位置到下一位
}
//若i位置数组内容为0,直接不操作,也就是说此时id已经指向0,继续执行i下一位判断
//也就是说id一直指向第一个0的位置,当不为0,i与id位置一起右移,进行位置交换, //也就是说id位置一直在往最右端推。当为0时,id不动等待下一个位置判断, //除非后边都是0,只要有不为0的位置,i与id位置的内容就交换,然后id右移也就是最新的第一个0的位置 //最终实现0都在数组末尾
}
// write your code here......
}