头歌:用C语言编写一个能实现动态数组的程序。测试输入: 5 1 2 3 4 5; 预期输出: 1 2 3 4 5
时间: 2024-10-07 13:03:44 浏览: 23
在C语言中,你可以使用结构体和指针来实现动态数组的功能。下面是一个简单的例子,我们将创建一个动态数组并演示如何插入和打印元素:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义动态数组结构
typedef struct DynamicArray {
int* arr; // 数组指针
size_t size; // 当前大小
size_t capacity; // 最大容量
} DynamicArray;
// 动态数组初始化函数
void dynamic_array_init(DynamicArray* arr) {
arr->arr = NULL;
arr->size = 0;
arr->capacity = 0;
}
// 动态数组扩容函数
void dynamic_array_resize(DynamicArray* arr, size_t new_size) {
if (new_size > arr->capacity) {
arr->capacity *= 2; // 如果需要,将容量翻倍
arr->arr = realloc(arr->arr, sizeof(int) * arr->capacity);
if (arr->arr == NULL) { // 检查内存分配是否成功
printf("Memory allocation failed.\n");
exit(1);
}
}
}
// 插入元素到动态数组
void dynamic_array_push_back(DynamicArray* arr, int value) {
dynamic_array_resize(arr, arr->size + 1); // 扩容如果必要
arr->arr[arr->size] = value; // 添加元素
arr->size++;
}
// 打印动态数组内容
void print_dynamic_array(const DynamicArray* arr) {
for (size_t i = 0; i < arr->size; i++) {
printf("%d ", arr->arr[i]);
}
printf("\n");
}
int main() {
DynamicArray my_array;
dynamic_array_init(&my_array);
int input[] = {1, 2, 3, 4, 5};
for (size_t i = 0; i < sizeof(input)/sizeof(input[0]); i++) {
dynamic_array_push_back(&my_array, input[i]);
}
print_dynamic_array(&my_array);
return 0;
}
```
当你运行这个程序,并输入`5 1 2 3 4 5`作为测试数据,它会按照输入顺序显示`1 2 3 4 5`。
阅读全文