在哈希表中搜索帮助!

时间:2011-05-13 22:29:56

标签: c++ search hash g++

我正在尝试为类编写一个哈希表,而我似乎无法在循环工作时获得这个。你们看到它有什么问题吗? while循环过早结束,我认为我的while循环条件有问题吗?

void search(store t[], string s, int num, int table_size)
{
  int temp = num;
  bool exit = false;
  while(t[temp].data != s && !exit){
    temp++;
    if (temp == table_size){
      cout<<"reached 0 inside while loop"<<endl;
        temp = 0;
    }
    if (temp == num){
      cout<<"test search loop"<<endl;          //I can't seem to get into here.
      exit = true;
    }
  }
  if(t[num].data == s)
    cout<<"("<<s<<")"<<" appears "<<t[num].count<<" times."<<endl;
  else
    cout<<"your string is not in my table"<<endl;
}

2 个答案:

答案 0 :(得分:1)

你的while循环似乎没问题,

但您确定以下一行吗?

if(t[num].data == s)
    cout<<"("<<s<<")"<<" appears "<<t[num].count<<" times."<<endl;

不应该是以下内容?

if(t[temp].data == s)
    cout<<"("<<s<<")"<<" appears "<<t[temp].count<<" times."<<endl;

因为很明显你在整个表格运行之前一直在运行整个表格,或者直到找到好的表格[即:while( t [temp] .data!= s ...)]。所以我猜你正在寻找好的 temp 索引,但是在你循环之后你不会使用它。

答案 1 :(得分:0)

尝试更改

 int temp = num;

 int temp = 0;