如何以倒序的方法去除数组尾部的填充零
时间: 2024-03-10 15:44:39 浏览: 24
可以使用两个指针的方法,一个指针指向数组末尾,一个指针指向当前需要填充零的位置。然后从数组末尾开始遍历,如果遇到非零元素,就将其移动到当前需要填充零的位置,并将指向当前位置的指针向前移动一位;如果遇到零元素,就继续向前遍历。最后,指向当前位置的指针之前的所有元素都已经填充好了零。
以下是示例代码:
```python
def remove_trailing_zeros(arr):
i = len(arr) - 1 # 指向数组末尾
j = len(arr) - 1 # 指向当前需要填充零的位置
while i >= 0:
if arr[i] != 0:
arr[j] = arr[i]
j -= 1
i -= 1
while j >= 0: # 将剩余位置填充为零
arr[j] = 0
j -= 1
return arr
```
注意,这个方法是就地修改数组,不会返回新的数组。如果需要保留原数组,可以先复制一份再进行操作。
相关问题
如何以倒序的方法去除数组尾部的填充零,直到遇到有效数值,用C语言举例说明
可以使用两个指针的方法,一个指针指向数组末尾,一个指针指向当前需要填充零的位置。然后从数组末尾开始遍历,如果遇到非零元素,就将其移动到当前需要填充零的位置,并将指向当前位置的指针向前移动一位;如果遇到零元素,就继续向前遍历。最后,指向当前位置的指针之前的所有元素都已经填充好了零,并返回指向第一个非零元素的指针。
以下是示例代码:
```c
#include <stdio.h>
int* remove_trailing_zeros(int arr[], int n) {
int i = n - 1; // 指向数组末尾
int j = n - 1; // 指向当前需要填充零的位置
while (i >= 0) {
if (arr[i] != 0) {
arr[j] = arr[i];
j--;
}
i--;
}
while (j >= 0 && arr[j] == 0) { // 找到第一个非零元素
j--;
}
return arr + j + 1; // 返回指向第一个非零元素的指针
}
int main() {
int arr[] = {1, 2, 0, 0, 3, 0, 4, 5, 0};
int n = sizeof(arr) / sizeof(int);
int* p = remove_trailing_zeros(arr, n);
for (int i = 0; i < p - arr; i++) { // 通过指针差计算有效元素个数
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在函数 remove_trailing_zeros 中,我们遍历数组并移除尾部的零。最后,我们再次遍历数组,找到第一个非零元素,并返回指向该元素的指针。在主函数中,我们使用返回的指针计算有效元素的个数,并输出数组中的元素。
c语言 INT8 数组 尾部追加参数
在 C 语言中,要在 INT8 数组的尾部追加参数,可以使用指针和动态内存分配的方法。首先,需要确定数组的当前长度,然后使用`malloc()`函数为数组申请更大的内存空间,将原来的数据复制到新的内存空间中,并在尾部追加新的参数。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int8_t *arr = malloc(5 * sizeof(int8_t)); // 假设数组初始长度为 5
// 在数组中填充一些数据
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
int8_t newParam = 6; // 要追加的新参数
// 获取当前数组长度,并为新数组申请更大的内存空间
int currentLength = 5;
int8_t *newArr = malloc((currentLength + 1) * sizeof(int8_t));
// 复制原数组数据到新数组
for (int i = 0; i < currentLength; i++) {
newArr[i] = arr[i];
}
// 在新数组尾部追加新参数
newArr[currentLength] = newParam;
// 释放原数组内存
free(arr);
// 更新数组指针
arr = newArr;
// 打印新数组
printf("New Array: ");
for (int i = 0; i < currentLength + 1; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 释放新数组内存
free(arr);
return 0;
}
```
输出结果为:
```
New Array: 1 2 3 4 5 6
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)