【问题标题】:Difference between Symbol table and Hash map data structuresSymbol table 和 Hash map 数据结构的区别
【发布时间】:2017-09-19 22:00:59
【问题描述】:

在阅读不同的数据结构时,发现编译器使用的符号表被归类为数据结构。

有人能解释一下符号表数据结构和哈希映射有什么区别吗?

【问题讨论】:

    标签: data-structures hashmap symbol-table


    【解决方案1】:

    首先Symbol table不是数据结构。 Symbol table 是计算机科学中的一种抽象数据类型 (ADT)。此 ADT 的另一个常用名称是字典。

    ADT 的实现称为数据结构。 Symbol Table ADT 有很多实现(又名数据结构)。一种这样的实现是哈希映射。 Symbol Table 的各种可能实现但不限于如下:

    • 无序数组实现
    • 有序(排序)数组实现
    • 无序列表实现
    • 有序链表实现
    • 基于二叉搜索树的实现
    • 基于平衡二叉搜索树的实现
    • 三元搜索实现
    • 基于散列的实现 - 例如哈希图

    注意:您可能还想阅读 this 线程以了解 ADT 和数据结构之间的区别。

    【讨论】:

      【解决方案2】:

      符号表本身并不是 a 数据结构。大多数编译器都需要一个或多个符号表,但它们的确切形式并不局限于一种特定的数据结构。 一些编译器可能会选择将他们的符号表实现为哈希映射,如果这适合他们的目的。

      所以我想说区别是概念上的。 “符号表”通过其用途描述数据结构。 “Hash Map”通过其实现来描述一个数据结构。

      Wikipedia page 还不错

      【讨论】:

        【解决方案3】:

        "符号表的主要目的是将值与键相关联。符号表的实现通常以其底层数据结构及其 get() 和 put() 的实现为特征。 使用散列的搜索算法由两个独立的部分组成。第一部分是计算将搜索键转换为数组索引的哈希函数。 散列搜索的第二部分是冲突解决过程"

        【讨论】:

          猜你喜欢
          • 2014-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-23
          • 1970-01-01
          • 2016-09-02
          • 2017-08-11
          • 2016-04-07
          相关资源
          最近更新 更多