适合快速搜索和简单的C数据结构add/remove
C data structure suitable for fast search and simple add/remove
如题头所述,我需要一个适合快速高效搜索的数据结构。数据结构还应该能够 add/remove 元素 to/from 数据结构内部的任何位置。
目前我正在使用链表。但问题是我应该遍历列表以找到所需的元素。一般搜索算法(二分搜索、跳转搜索等)不能直接用于链表,因为不能随机访问列表元素。对这些算法所需的列表元素进行排序也是一个问题。
另一方面,我不能使用数组,因为很难 add/remove 一个元素 to/from 任何想要的索引。
我在链表中寻找搜索算法,然后我来到了'skip lists'。现在我来问问有没有更好的数据结构适合我的情况,或者链表有没有更好的搜索算法。
我会使用 AVL 二叉搜索树
二叉搜索树的例子你可以看看https://www.geeksforgeeks.org/avl-tree-set-1-insertion/ and https://www.geeksforgeeks.org/avl-tree-set-2-deletion/
很详细,有C代码和schema。
搜索效率高,并且允许您添加和删除值。
它适用于数值和某些字符实现(例如 dictionnay)。
如题头所述,我需要一个适合快速高效搜索的数据结构。数据结构还应该能够 add/remove 元素 to/from 数据结构内部的任何位置。
目前我正在使用链表。但问题是我应该遍历列表以找到所需的元素。一般搜索算法(二分搜索、跳转搜索等)不能直接用于链表,因为不能随机访问列表元素。对这些算法所需的列表元素进行排序也是一个问题。 另一方面,我不能使用数组,因为很难 add/remove 一个元素 to/from 任何想要的索引。
我在链表中寻找搜索算法,然后我来到了'skip lists'。现在我来问问有没有更好的数据结构适合我的情况,或者链表有没有更好的搜索算法。
我会使用 AVL 二叉搜索树
二叉搜索树的例子你可以看看https://www.geeksforgeeks.org/avl-tree-set-1-insertion/ and https://www.geeksforgeeks.org/avl-tree-set-2-deletion/
很详细,有C代码和schema。
搜索效率高,并且允许您添加和删除值。 它适用于数值和某些字符实现(例如 dictionnay)。