• 大小: 518KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签: 哈希  

资源简介

哈希表查找,使用哈希表实现学生学籍管理======================

资源截图

代码片段和文件信息

#include “iostream.h“
#include “string.h“
typedef int keytype;         //定义关键字类型
const int maxlist=10;
struct elemtype            //定义学生结构体类型
{
keytype key;
char name[8];
int english;
int math;
};
//--------------------------------定义哈希函数类------------------------
class sqhash             
{
elemtype *hash;
int length;
keytype p;
int tongzhi;  //在find()函数中,用来记录有相同记录是的下标
int kongwz;   //在find()函数中,用来记录找到可用空间是的下标
public:
sqhash();
~sqhash();
void creat(int nint m);
int creathash();
int find(keytype k);     //是标准的全部查找函数
int find1(keytype k);     //是进行某一条记录查找的函数
int insert(keytype k);
int cancel(keytype k);
void printout();
};
//-------------------------------------------------------------------
//------------------------------------(定义顺序连表)------------
class list
{
public:
elemtype li[maxlist];
int size;
list()
{
size=0;
}
int creatlist();
int insert();
void changorder();
int find(keytype k);
void print();
};
//----------------------------------------------------------
sqhash::sqhash()
{
}
sqhash::~sqhash()
{
delete []hash;           
}
void sqhash::creat(int nint m)
{
length=n;
p=m;
hash=new elemtype[length];
for(int i=0;i //hash[i].key=0;        //怎么样的话,如果输入的k为0,所以会判断是相同记录存在的。
hash[i].key=-1;          //所以,,用key==-1表示,该位置的空间是空的。
}
int sqhash::find(keytype k)   
{
int biaos;           //用来标识查找的结果。
int p1p2;
p1=k%p;              //所以p1就是对应的地址,
p2=p1-1;             //所以p2是p1的前一个地址,
if(p2<0)              //为了防止p1=0的时候,p2应该是在p1之前,所以形成循环。
{
p2=length-1;
}
while((hash[p1].key!=-1)&&(p1!=p2))  //查找是否存在空闲的位置
p1=(p1+1)%length;
if(hash[p1].key==-1)    //存在空位置
{
kongwz=p1;      //所以保存对应的下标
biaos=1;         //设置对应的标记
}
if(p1==p2)
biaos=0;      //表示哈希函数表已经满。
for(int i=0;i if(hash[i].key==k)       //表示查找是否有相同记录的学生记录
{
biaos=2;      //设置标记
tongzhi=i;     //保存对应的下标
}
return biaos;

}
int sqhash::find1(keytype k)
{
int k1;
k1=find(k);
if(k1==0||k1==1)     //根据find()函数进行判断,该关键字是否可用
{
cout<<“\n对不起!不存在对应的学生的记录。“;
return 0;
}
if(k1==2)
{
cout<<“学号:“< }
return 0;
}


int sqhash::creathash()
{
int k1k;
cout<<“\n请输入要插入的学生记录的学号,(-1结束)“;
cin>>k;
while(k!=-1)
{
k1=find(k);       //所以k1的到关键字是否可用的判断信息
if(k1==0)
{
cout<<“\n对不起!要插入的表已经满!“;
return 0;
}
if(k1==1)
{
cout<<“\n请输入学生的姓名,英语成绩,数学成绩:“;
cin>>hash[kongwz].name>>hash[kongwz].english>>hash[kongwz].math;
hash[kongwz].key=k;
}
if(k1==2)
{
cout<<“\n要插入的学生的记录与关键字与某条记录相同,值为:“;
cout<<“学号:“< }
cout<<“\n请输入要插入的同学的学号,(-1结束)“;
cin>>k;
}
}
int sqhash::insert(keytype k)
{
int k1;
k1=find(k);       //所以k1得到关键字的相

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      31040  2009-09-25 22:12  哈希表\Debug\g.obj

     文件     427008  2009-09-25 22:14  哈希表\Debug\g.pdb

     文件     194879  2009-09-25 22:14  哈希表\Debug\hash.obj

     文件     118784  2009-09-25 22:14  哈希表\Debug\vc60.pdb

     文件       8070  2008-06-27 22:38  哈希表\g.cpp

     文件       3403  2009-09-25 22:21  哈希表\g.dsp

     文件        510  2009-09-25 22:21  哈希表\g.dsw

     文件      50176  2009-09-27 15:55  哈希表\g.ncb

     文件      48640  2009-09-27 15:55  哈希表\g.opt

     文件        901  2009-09-25 22:14  哈希表\g.plg

     文件       1208  2009-10-11 18:11  哈希表\ReadMe.txt

     文件        293  2009-10-11 18:11  哈希表\StdAfx.cpp

     文件        667  2009-10-11 18:11  哈希表\StdAfx.h

     文件       3441  2009-10-11 23:19  哈希表\哈希表.cpp

     文件       4598  2009-10-11 18:11  哈希表\哈希表.dsp

     文件        520  2009-10-11 18:11  哈希表\哈希表.dsw

     文件      50176  2009-10-11 23:33  哈希表\哈希表.ncb

     文件      53760  2009-10-11 23:33  哈希表\哈希表.opt

     文件        969  2009-10-11 23:19  哈希表\哈希表.plg

     文件       2147  2009-10-11 18:11  哈希表\哈希表___Win32_Debug\StdAfx.obj

     文件     110592  2009-10-11 23:19  哈希表\哈希表___Win32_Debug\vc60.pdb

     文件     540787  2009-10-11 23:19  哈希表\哈希表___Win32_Debug\哈希表.exe

     文件     192553  2009-10-11 23:19  哈希表\哈希表___Win32_Debug\哈希表.obj

     文件    1090560  2009-10-11 23:19  哈希表\哈希表___Win32_Debug\哈希表.pdb

     目录          0  2010-01-15 10:30  哈希表\Debug

     目录          0  2010-01-15 10:30  哈希表\哈希表___Win32_Debug

     目录          0  2010-01-15 10:30  哈希表

----------- ---------  ---------- -----  ----

              2935682                    27



............此处省略0个文件信息

评论

共有 条评论