我有两个问题: 如何修改Array Abstract数据类型以实现关联数组? 如何修改树抽象数据类型以实现关联数组?
答案 0 :(得分:1)
要从数组中创建关联数组,您通常会从某种结构数组开始:
struct item {
key_type key;
value_type value;
};
然后您使用key
来查找value
s。为了提高效率,您通常希望根据key
对数组进行排序,因此您可以使用二分搜索(或插值搜索,如果有任何程度的可预测性到您的密钥分发)。
对于树,你几乎都一样,除了对于树,二进制搜索是默认的。最终得到的节点与数组的节点非常相似,还有几个指针:
struct node {
key_type key;
value_type value;
struct node *left;
struct node *right;
};
根据所涉及的树的类型,您可能还需要另一个指针来创建线程树和/或某些平衡信息(例如,对于AVL或R-B树)。相反,对于B树,您最终会得到类似于关联数组的节点数组,并将它们链接到一个平衡树中。