如问题标题中所述,我需要一种适合快速高效搜索的数据结构。数据结构还应该能够在数据结构内的任何位置添加/删除元素。
目前我正在使用链接列表。但问题是我应该浏览列表以找到所需的元素。一般搜索算法(二叉搜索、跳转搜索等(不能直接在链表中使用,因为没有对列表元素的随机访问。对这些算法中所需的列表元素进行排序也是一个问题。另一方面,我不能使用数组,因为很难在任何所需的索引中添加/删除元素。
我在链表中寻找搜索算法,我来到了"跳过列表"。现在我在这里问是否有更好的数据结构适合我的情况,或者是否有更好的链表搜索算法。
我会使用 AVL 二叉搜索树
有关二叉搜索树的示例,您可以查看 https://www.geeksforgeeks.org/avl-tree-set-1-insertion/和 https://www.geeksforgeeks.org/avl-tree-set-2-deletion/
它非常详细,有 C 代码和模式。
搜索效率很高,它允许您添加和删除值。它适用于数值和某些字符实现(例如字典(。