您可以使用malloc和realloc的组合.首先初始化C数组(malloc)并增长它(realloc).但是,如果要进行大量插入操作,则不希望一次增加1个元素.最好提出一个方案,使列表在需要时增长(即每次列表大小达到分配的大小时添加10个元素).
链表是一种方式。它具有O(1)插入(假设您已经位于插入点)和删除,但具有O(n) n“第一个元素查找”功能。
调整动态分配的数组的大小malloc是另一个方法。它具有O(1) n第一个元素查找功能,但具有O(n)插入功能(因为必须复制插入点之后的所有后续元素,以及可能的所有元素realloc)和删除功能。
如果您真的担心这两个操作的性能,我会选择某种自平衡树结构。您一定可以实现O(log n)查找、插入和删除。出于所有实际目的,如果对象位于主内存中,log n则以 32 或 64 为界,O(log n)也可能是O(1)。