【问题标题】:Associative Array, Array and Tree关联数组、数组和树
【发布时间】:2013-06-06 18:02:40
【问题描述】:

我有两个问题: 如何修改 Array Abstract 数据类型以实现关联数组? 如何修改树抽象数据类型以实现关联数组?

【问题讨论】:

  • 这些问题在课堂材料中。我阅读了它们,但找不到合适的答案。

标签: c++ arrays tree associative-array


【解决方案1】:

要从数组中创建关联数组,您通常会从某种结构的数组开始:

struct item {
    key_type key;
    value_type value;
};

然后你会使用keys 来查找values。为了提高效率,您通常希望根据keys 对数组进行排序,因此您可以使用二分搜索(或插值搜索,如果您的密钥分布有任何程度的可预测性)。

对于一棵树,您几乎可以执行相同的操作,除了对于一棵树,二叉搜索是默认设置。你最终会得到一个与数组非常相似的节点,再加上几个指针:

struct node { 
    key_type key;
    value_type value;
    struct node *left;
    struct node *right;
};

根据所涉及的树的类型,您可能还需要另一个指针来创建线程树和/或一些平衡信息(例如,用于 AVL 或 R-B 树)。相反,对于 B 树,您最终会得到与关联数组相似的节点数组,并将它们链接在一起形成平衡树。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2011-08-15
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多