Поиск в хеш-таблице HELP! - PullRequest
0 голосов
/ 14 мая 2011

Я пытаюсь написать хеш-таблицу для класса, и я не могу получить это во время работы цикла.Ребята, вы видите что-то не так с этим?Цикл 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 ]

1 голос
/ 14 мая 2011

Ваш цикл 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 , но вы не используете его после цикла while.

0 голосов
/ 14 мая 2011

Попробуйте изменить

 int temp = num;

на

 int temp = 0;
...