动态数组、排序与搜索算法详解
1. 动态数组(Dynamic Array)
动态数组是一种能自动增长的数组,具备链表的大部分特性。通常,它占用空间更少、运行速度更快,还有其他优点,但也存在一些缺点,比如从头部移除元素速度很慢,解决办法是尽量从尾部进行操作。
动态数组是一个预先一次性分配好的 void ** 指针数组,这些指针指向数据。与链表不同,链表需要一个完整的结构体来存储 void * 类型的 value 指针,而动态数组只需一个单一的数组来存储所有指针,因此无需额外的 next 和 previous 指针,可直接通过索引访问数组元素。
以下是动态数组的头文件 darray.h :
#ifndef _DArray_h
#define _DArray_h
#include <stdlib.h>
#include <assert.h>
#include <lcthw/dbg.h>
typedef struct DArray {
int end;
int max;
size_t element_size;
size_t expand_rate;
void **contents;
} DArray;
DArray *DArray_create(size_t element_size, size_t initial_max);
void DArray_destro
超级会员免费看
订阅专栏 解锁全文
1027

被折叠的 条评论
为什么被折叠?



