当前位置: 首页 > 知识库问答 >
问题:

为什么我们在C++中使用pos?假设由我的代码intpos=cHash(符号);

宰父涵忍
2023-03-14

我在为我的编译器课程做一个SymbolTable的程序...我遇到了一个pos的问题...为什么我们首先要用它呢?TIA<3

void insert(char *symbol, char *type)
{
    int pos = cHash(symbol);

    if (block[pos] == NULL)
    {
        block[pos] = new SymbolInfo();
        block[pos]->symbol = symbol;
        block[pos]->type = type;
        block[pos]->next = NULL;
    }
    else
    {
        SymbolInfo *newNode = new SymbolInfo();
        newNode->symbol = symbol;
        newNode->type = type;

        // pointer swap
        SymbolInfo *nextNode = block[pos];
        block[pos] = newNode;
        newNode->next = nextNode;
    }
}

共有1个答案

臧烨烁
2023-03-14

这里的代码实现了所谓的链式哈希表。我们维护一个链表数组,并使用函数cHash将每个符号分配给其中一个链表。

这样存放东西的好处是速度快。如果我们把所有东西都放入一个单链表中,那么查找东西的平均成本是O(n),其中n是列表中的条目数,因为平均来说,我们至少要查找列表中的一半条目。但是,通过拥有多个链表(例如,其中的b个),并或多或少随机地在它们之间分配项目,我们将查找的平均成本降低到O(1+N/b),如果b与N大致相同的数量级,则查找速度要快得多。

 类似资料:
  • 问题内容: 有什么用的,并在Hibernate?因为我在互联网上发现的每个示例都将数据插入到单个表中,并使用两个不同的类来做到这一点。我的观点是,如果我使用单个表,那么我可以在单个类中映射所有列,那么为什么要使用不同的类。如果我们使用两个不同的表,则存在和hibernate关系。 问题答案: Hibernate 1中有两种对象。Value Object2 。实体 价值对象 是不能独立存在的对象。以

  • 我们为什么使用: 而不是: ?

  • 问题内容: 我知道Python提供了API,因此您可以在C代码中调用Python解释器,但是我想要的却是相反的。 我的程序需要使用一些C API,所以代码必须用C编写。但是我也想用Python打包程序。这意味着我想在Python中调用这些C函数或可执行文件。那可能吗? 如果我希望C代码成为一个库,这意味着我将它与Python 中的可能的链接一起使用,该怎么做?那可能吗?如果我将C代码写入可执行文件

  • 问题内容: 我是一个完整的初学者。 我已阅读了有关解决方案的Google文档。我在互联网上搜索了同样的内容。 但。一切似乎都是技术性的。 据我了解,.Flush有助于在功能出现时立即执行这些功能,而无需将它们捆绑在一起。 我对吗? 如果不是的话,外行人的含义是什么?并请举一个简单的例子。谢谢。 问题答案: 程序员在希望确保在继续之前将先前代码的输出和/或效果写入电子表格时会使用。如果您不这样做,则

  • 问题内容: 为什么我们不能仅将所有测试用例记录在 Selenium IDE中 ,将其导出到 Java / WebDriver 并在带有Eclipse的 WebDriver中 运行呢? 我需要明确的解释,因为我对使用WebDriver非常困惑! 谁能解释为什么IDE录制的脚本在WebDriver中失败? 问题答案: 为什么我们不能只在IDE中记录所有测试用例,将其导出到java / webdrive

  • 问题内容: 有什么用的,并在Hibernate?因为我在互联网上发现的每个示例都是在单个表中插入数据,并使用两个不同的类来完成此操作。我的观点是,如果我使用单个表,那么我可以在单个类中映射所有列,那么为什么要使用不同的类。如果我们使用两个不同的表,则存在和休眠关系。 问题答案: Hibernate 1中有两种类型的对象。Value Object2 。实体 价值对象 是不能独立存在的对象。以为例。如