适用于快速搜索和简单添加/删除的C数据结构

时间:2019-06-19 09:20:19

标签: c search data-structures linked-list random-access

正如问题标题中所述,我需要一种适合快速高效搜索的数据结构。数据结构还应该能够在数据结构内部的任何位置添加/删除元素。

目前,我正在使用链接列表。但是问题是我应该遍历列表以查找所需的元素。常规搜索算法(二进制搜索,跳转搜索和...)不能在链接列表中直接使用,因为不能随机访问列表元素。对这些算法中所需的列表元素进行排序也是一个问题。 另一方面,我无法使用数组,因为很难在任何所需的索引中添加/删除元素。

我一直在寻找链表中的搜索算法,然后来到了“跳过列表”。现在,我在这里问我的情况是否有更好的数据结构,或者是否有针对链表的更好的搜索算法。

1 个答案:

答案 0 :(得分:4)

我将使用AVL二进制搜索树

以二进制搜索树为例,您可以查看https://www.geeksforgeeks.org/avl-tree-set-1-insertion/https://www.geeksforgeeks.org/avl-tree-set-2-deletion/

非常详细,有C代码和架构。

搜索效率很高,并且可以添加和删除值。 它适用于数值和某些字符实现(例如字典)。