散列存储与冲突处理
											怎样将录入的学生学号按散列存储,并用拉链法解决冲突呢?										
					
	
				
											就开散列的方法啊.你先定义一个散列表的结点结构,
每个结构中含有一个指针域,指向发生冲突的元素的链表,你可以参照我的开散列存储结构的定义来写程序:
/////////////////////////////////////////////////////////////
//HashNode结构的定义 即开散列表的结点的定义
/////////////////////////////////////////////////////////////
template<class T>
struct HashNode
{
    T key;            //结点的关键码域
    HashNode<T>* link;//结点的指针域
    HashNode(T x)     //构造函数
    {key=x;link=NULL;};
};
/////////////////////////////////////////HashNode结构定义结束
/////////////////////////////////////////////////////////////
//OpenHashTable类模板的实现
//即以开散列的方式实现的哈希表
/////////////////////////////////////////////////////////////
template<class T>
class OpenHashTable
{
private:
    int divisor;                    //除数(必须是质数)
    int TableSize;                  //表的大小
    HashNode<T>** ht;               //开散列表,即同义词链表的首指针的定义
    
public:
    OpenHashTable(int div,int sz);  //构造函数
    ~OpenHashTable();               //析构函数
    HashNode<T>* FindPos(T x)const; //找指定关键码的结点的指针
    
    bool Insert(const T x);         //把关键码为x的结点插入到开散列表中
    bool Remove(const T x);         //删除指定关键码的结点
    //友元重载<<运算符输出开散列表的内容
    friend ostream& operator<<(ostream& os,OpenHashTable<T>& OPHT);
};
//////////////////////////////////OpenHashTable类模板声明结束										
					
	
	
	
	      


											
	    

	
											
											
加我时候注明成绩管理哦