数据构造课程设计
设计说明书
哈希表的实现与应用
同学姓名学 号
班 级
成 绩
指导教师 曹记东
数学与计算机科学学院
题 目别以用户名为检索以及以以 号码将用户信息添加到哈希表。在查找用户信息时必需先建立哈希表〔先进展4、5 步骤〕。只需输入用户的姓名或号码就可以查找到用户信息。程序用构造体存储用户信息,建立的哈希表便利快速的查找到用户信息。程序用链表的方式存储信息以及构造哈希表
具体流程图如下所示:
查询系统菜单 main()
Create Hash2(
); 姓名
退出系统
产 生
哈 希表
( 用 二
次
列
散
法
性 探 测
发法)
功能模块
户
信
添
加
用户信
息
的
用
息
户
息
信
图 菜单系统
3
程序主流程图
Int nt main()
4
插入用户信息 int InsertH()
建 立 用 户 信 息
Getin()
9
9
显 示 所 有 信 息
ShowInformati〔〕;
以姓名产生哈希值
int Hash1()
以号码产生哈希值
int Hash1()
9
9
冲 突 处 理 函 数 Status collision1()
冲突处理函数Status collision2()
9
9
是 是否冲突
H->elem[pp]=N
ULLL
是否冲突 是
H->elem[pp]=N ULL
9
否
否
以姓名建立哈希表
int CreateHash1( )
否
以号码建立哈希表 int CreateHash1( )
9
9
以 姓 名 查 找 用 户 信 息 int SearchHash1()
以 号 码 查 找 用 户 信 息 int SearchHash1()
9
完毕程序
9
图 各个模块之间调用关系
数据构造描述与定义
用构造体数据定义哈希表
typedef struct //哈希表
{
Record *elem[HASHSIZE]; //数据元素存储基址int count; //当前数据元素个数
int size; //当前容量
}HashTable;
用构造体定义建立用户记录
typedef struct //记录
{
char name[20]; char tel[20]; char add[20];
}Record;
初始化哈希表地址,初始化哈希表
#define LEN sizeof(HashTable)
#define HASHSIZE 54 //定义哈希表长HashTable *H;
H=(HashTable*)malloc(LEN); //申请哈希表空间地址for(i=0;i<HASHSIZE;i++) //初始化哈希表
H->elem[i]=NULL;
H->size=HASHSIZE; //哈希表大小
H->count=0; //记录哈希表内个数大小Record a[MAXSIZE];
16
主要模块算法描述及流程图
1〕增加信息
STAR
int getin(Record*a,int n)
{
scanf(“%d”,&NUM-BER); int I;
if(NUM-BER<MAXS
IZE)
yes
printf(“输入过大,请重新输入:\n”)
for(i=0,i<NUM-BER;i++)
return UNSUCESS;);
printf(“\t 联系人%d\n“,i+1);
printf(“\t\t 用户名:“); scanf(“%s“,a[i+n].name); printf(“\t\t 号码: “); scanf(“%s“,a[i+n].tel); printf(“\t\t 地址: “); scanf(“%s“,a[i+n].add);
}
return n+NUM_BER;
Return n+NUM-BER
STO
哈希表课程设计 来自淘豆网m.daumloan.com转载请标明出处.