0

これはまだ宿題です。宿題で最後の問題があります。私はこのコードの print() に取り組んでいます。必要な出力を完全に生成できませんでした。私の print() では、挿入関数でハッシュテーブルに追加されている値を出力できません。print() で間違った List 配列を使用していることはわかっていますが、List 配列を print() に組み込む方法がわかりません。これが私のクラス宣言と、insert() と print() です。

const int EMPTY = 0;
const int OCCUPIED = 1;
class HTable
{
  public:
HTable(int size);
void insert( const string &key);
void remove(const string &key);
void print();


  private:
vector<list<string>> List;
int currSize;

//int hash(string key)const;
unsigned hash(const std::string& key) const;
int hash_string( const string &s );
int hashFunction(string key);
int HTableSize;
//int *status_arr;
ostream &   operator <<( ostream &);
HTable * table;
int *tableContents;
int recordSpace;
};

入れる()

inline void HTable::insert(  const string &key )
{
  // hash the key to determine which bucket the key would be stored in.
  int bucketNum = hash(key) ;

  list<string>& bucket = List[bucketNum] ;

  // search the bucket to see if the key is already in the bucket.
  if ( bucket.empty() || bucket.end() == find(bucket.begin(), bucket.end(), key) )
    bucket.push_back(key) ;           // if it's not in the bucket, store it in the bucket.
}

印刷()

inline void HTable::print()
{
    list<string>::iterator itr;
for(int i = 0; i < HTableSize; i++)
{
    if(tableContents[i] != OCCUPIED)
        cout << (i)   << endl;

}

}
4

0 に答える 0