これはまだ宿題です。宿題で最後の問題があります。私はこのコードの 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;
}
}