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函数在容量不足时自动增容。每次插入元素时,如果当前数组容量已满,就会扩展为原来的两倍。

这种实现方式既能保证高效的内存使用,又能提供快速的随机访问能力。

zip 文件大小:138KB