题解 | 数组元素处理

数组元素处理

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......

}

全部评论

相关推荐

04-25 18:13
五邑大学 Java
后来123321:大二两段实习太厉害了,我现在大二连面试都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务