【问题标题】:searching for a key in a bst在 bst 中搜索密钥
【发布时间】:2016-04-01 21:25:15
【问题描述】:

编译器告诉我断言失败,即使我在链接节点数组中至少有 2 个项目。如何修复这个 bool contains 函数?是的,我尝试了多种方法,但仍然遇到同样的错误。

请记住,数组的不同索引中有 2 个项目。但它没有在下面显示。

这是contain 函数:

bool Map::contains(string key){
bool idk = false;

if(elementsStoredCount != 0){
    int idk = hashFunc(key); //the hashFunc computes using modulo

    if(array[found] != nullptr){
        idk = false;
    }
    else{
        found = true;
    }
}


return found;
}

当我在 main.cpp 中进行测试时,由于某种原因,第二行失败了。

assert(as.contains("1")==true);

【问题讨论】:

  • 提供更多信息,例如:可编译代码、输入、你得到什么输出以及你期望什么等。
  • 在这里猜测:obj 是否超出范围?这也是 C++11,而不仅仅是纯 C++
  • 你的 hashFunc 是做什么的? idk 的值是多少?
  • 看来错误在hashFunc
  • 您如何知道该表包含您声称包含的内容?

标签: c++ arrays hashtable


【解决方案1】:

基于其他一些 cmets 并阅读代码,我认为您的问题是您的 int hashFunc(string key) 函数返回的索引不正确,超出了 array[] 的范围。

您是否对hashFunc() 函数进行了调试/测试以确保数据正确?如果正确实施并且您仍然面临错误,那么接下来我将查看您的表数据/插入函数。

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    相关资源
    最近更新 更多