这仍然是我的家庭作业。我的作业有最后一个问题。我一直在为这段代码编写 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;
}
}