再发学习中写的代码---散列表抽象数据类型及其算法的实现,大家共勉:->(oop)
#ifndef HASHTABLE_H#define HASHTABLE_H
#include<iostream.h>
#include<stdlib.h>
#include<cmath>
enum Status{Active,Empty,Deleted};//散列表桶的状态
#define DefaultSize 100
///////////////////////////////////////////////////
//HashTable 哈希表类模板声明和定义
///////////////////////////////////////////////////
template<class T>
class HashTable
{
private:
int divitor; //散列函数除留取余的除数
int CurrentSize; //当前桶的个数
int TableSize; //最大的桶数
T* ht; //散列表的存储数组
Status* info; //用于存放每个桶的状态的数组
int Hash(const T k)const; //散列函数根据关键码计算初始桶号
int FindPos(const T k)const;//根据关键码计算要插入的位置
int FindPosDoubleProb(const T k)const;//二次探查法搜索
public:
//构造函数
HashTable(const int d,int sz=DefaultSize);
//析构函数
~HashTable(){delete [] ht;delete [] info;};
//在散列表中搜索k
bool Search(const T k,int& loc)const;
//在散列表中插入一个元素k
bool Insert(const T k);
//通过二次探查法实现的散列表的插入
bool DoubleProbInsert(const T k);
//删除指定关键码的元素
bool Remove(const T k);
//显示当前散列表的桶号,内容,和状态
void Display();
};
////////////////////////////HashTable类模板声明结束