#include <stdio.h>
#include <stdlib.h>
// 定义动态数组结构体
typedef struct {
int *data; // 存储数据的指针
int size; // 当前元素个数
int capacity; // 数组容量
} DynamicArray;
// 初始化动态数组
DynamicArray* createDynamicArray(int initialCapacity) {
DynamicArray *arr = (DynamicArray*)malloc(sizeof(DynamicArray));
if (arr == NULL) {
return NULL;
}
arr->data = (int*)malloc(initialCapacity * sizeof(int));
if (arr->data == NULL) {
free(arr);
return NULL;
}
arr->size = 0;
arr->capacity = initialCapacity;
return arr;
}
// 添加元素到动态数组
void addElement(DynamicArray *arr, int value) {
if (arr->size == arr->capacity) {
// 扩容
arr->capacity *= 2;
arr->data = (int*)realloc(arr->data, arr->capacity * sizeof(int));
if (arr->data == NULL) {
// 处理内存分配失败
fprintf(stderr, "内存分配失败\n");
exit(EXIT_FAILURE);
}
}
arr->data[arr->size++] = value;
}
// 删除指定位置的元素
void deleteElement(DynamicArray *arr, int index) {
if (index < 0 || index >= arr->size) {
// 处理越界
fprintf(stderr, "索引越界\n");
return;
}
for (int i = index; i < arr->size - 1; i++) {
arr->data[i] = arr->data[i + 1];
}
arr->size--;
// 可考虑缩容逻辑,这里暂不实现
}
// 获取指定位置的元素
int getElement(DynamicArray *arr, int index) {
if (index < 0 || index >= arr->size) {
// 处理越界
fprintf(stderr, "索引越界\n");
exit(EXIT_FAILURE);
}
return arr->data[index];
}
// 释放动态数组内存
void freeDynamicArray(DynamicArray *arr) {
free(arr->data);
free(arr);
}
int main() {
DynamicArray *arr = createDynamicArray(2);
addElement(arr, 10);
addElement(arr, 20);
addElement(arr, 30);
printf("获取第二个元素: %d\n", getElement(arr, 1));
deleteElement(arr, 1);
printf("删除第二个元素后,获取第二个元素: %d\n", getElement(arr, 1));
freeDynamicArray(arr);
return 0;
}