符号表和哈希表数据结构的区别

12

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

有人能解释一下符号表数据结构和哈希表之间的区别吗?

3个回答

18

TL;DR: 符号表并不是一个数据结构,而是一种抽象数据类型(ADT)。因此,它不能与哈希表相比较,哈希表是一种数据结构。但它们之间非常密切相关。

详细解释: 首先,符号表并不是一个数据结构。在计算机科学中,符号表是一种抽象数据类型(ADT)。ADT 更通俗的说法是字典

对 ADT 的实现称为 数据结构。有许多数据结构实现了符号表/字典 ADT。其中一种数据结构是哈希表。其他可能实现符号表/字典 ADT 的数据结构如下:

  • 未排序数组实现
  • 有序(排序)数组实现
  • 未排序链表实现
  • 有序链表实现
  • 基于二叉搜索树的实现
  • 基于平衡二叉搜索树的实现
  • 三叉搜索实现
  • 基于哈希的实现 - 如哈希表

请记住,上述列表并不详尽无遗。这个 ADT 可以有更多的实现。

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


你的回答比你链接的页面更清晰。 - MrR

11

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

因此,我认为区别在于概念上的差异。 "符号表"按其目的描述了数据结构。 "哈希表"按其实现描述了数据结构。

维基百科页面还可以。


6

enter image description here符号表的主要目的是将键与值关联起来。符号表实现一般根据底层数据结构和get()和put()方法的实现进行特征化。 使用哈希的搜索算法由两个独立的部分组成。第一部分是计算哈希函数,将搜索键转换为数组索引。 哈希搜索的第二部分是冲突解决过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接