C语言实现动态数组的代码示例
在C语言中,动态数组是一种能够根据需要自动增容的数组,具有比普通数组更灵活的内存管理方式。相较于链表,动态数组提供了下标访问元素的优势,使得数据操作更为高效。
代码实现:
#include
#include
typedef struct {
int *arr;
int size;
int capacity;
} DynamicArray;
void initArray(DynamicArray *dArr, int initialCapacity) {
dArr->arr = (int *)malloc(initialCapacity * sizeof(int));
dArr->size = 0;
dArr->capacity = initialCapacity;
}
void resizeArray(DynamicArray *dArr) {
dArr->capacity *= 2;
dArr->arr = (int *)realloc(dArr->arr, dArr->capacity * sizeof(int));
}
void insert(DynamicArray *dArr, int value) {
if (dArr->size == dArr->capacity) {
resizeArray(dArr);
}
dArr->arr[dArr->size++] = value;
}
void printArray(DynamicArray *dArr) {
for (int i = 0; i < dArr>size; i++) {
printf("%d ", dArr->arr[i]);
}
printf("
");
}
int main() {
DynamicArray dArr;
initArray(⇓, 2); // 初始容量为2
insert(⇓, 10);
insert(⇓, 20);
insert(⇓, 30); // 自动增容
printArray(⇓);
free(dArr.arr);
return 0;
}
代码分析:该代码实现了一个简单的动态数组结构,通过resizeArray
函数在容量不足时自动增容。每次插入元素时,如果当前数组容量已满,就会扩展为原来的两倍。
这种实现方式既能保证高效的内存使用,又能提供快速的随机访问能力。
138KB
文件大小:
评论区