C语言上机实践课题目如下:给定一个整数数组 nums,将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序,请给出代码解答
时间: 2024-05-23 22:15:25 浏览: 95
js代码-给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
可以用双指针遍历该数组,一个指针记录非零元素的位置,另一个指针遍历整个数组。当遍历到非零元素时,将其放到非零指针的位置上,并将非零指针后移一位。遍历完整个数组后,非零指针的位置即为最后一个非零元素的位置+1,将其后面的元素全部赋值为0即可。
以下是代码实现:
void moveZeroes(int* nums, int numsSize){
int i, j = 0;
for (i = 0; i < numsSize; i++) {
if (nums[i] != 0) {
nums[j] = nums[i];
j++;
}
}
for (i = j; i < numsSize; i++) {
nums[i] = 0;
}
}
当然,实际上还有其他解法,比如可以用一个计数器记录0的个数,再将非零元素往前移动。这里提供的是双指针解法,希望对你有所帮助。
阅读全文