printf(\
printf(\请输入一个任务选项>>>\ printf(\
scanf(\ switch(num){ case 1: getin(a); break; case 2:
ShowInformation(a); break; case 3:
CreateHash1(H,a); /* 以姓名建立哈希表 */ break; case 4:
CreateHash2(H,a); /* 以电话号码建立哈希表 */ break; case 5: c=0;
SearchHash1(H,c); break; case 6: c=0;
SearchHash2(H,c); break; case 7: Cls(a); break; case 8: Save(); break; case 9: return 0; break; default:
printf(\你输错了,请重新输入!\ printf(\ } }
system(\ return 0;
}
3、模块结构图及各模块的功能:
四、源程序清单:
#include
#define MAXSIZE 20 #define MAX_SIZE 20 #define HASHSIZE 53 #define SUCCESS 1 #define UNSUCCESS -1
#define LEN sizeof(HashTable) typedef int Status;
typedef char NA[MAX_SIZE];
typedef struct {
NA name; NA xuehao; NA tel; }Record;
typedef struct {
Record *elem[HASHSIZE]; int count; int size; }HashTable;
Status eq(NA x,NA y) {
if(strcmp(x,y)==0) return SUCCESS;
else return UNSUCCESS; }
Status NUM_BER;
void getin(Record* a) {int i;
system(\ printf(\输入要添加的个数:\\n\ scanf(\
for(i=0;i printf(\请输入第%d个记录的姓名:\\n\ scanf(\ printf(\请输入%d个记录的学号:\\n\ scanf(\ printf(\请输入第%d个记录的电话号码:\\n\ scanf(\ } } void ShowInformation(Record* a) {int i; system(\ for( i=0;i printf(\第%d个用户信息:\\n 姓 名:码:%s\\n\} void Cls(Record* a){ printf(\ system(\} long fold(NA s) { char *p; long sum=0; NA ss; strcpy(ss,s); strupr(ss); p=ss; while(*p!='\\0') sum+=*p++; printf(\ return sum; } int Hash1(NA str) { %s\\n 学号:%s\\n 电话号 long n; int m; n=fold(str); m=n%HASHSIZE; return m; } int Hash2(NA str) { long n; int m; n = atoi(str); m=n%HASHSIZE; return m; } Status collision(int p,int c) { int i,q; i=c/2+1; while(i q=(p+i*i)%HASHSIZE; if(q>=0) return q; else i=c/2+1; } else{ q=(p-i*i)%HASHSIZE; c++; if(q>=0) return q; else i=c/2+1; } } return UNSUCCESS; } void benGetTime(); void CreateHash1(HashTable* H,Record* a) { int i,p=-1,c,pp; system(\ benGetTime(); for(i=0;i c=0; p=Hash1(a[i].name); pp=p; while(H->elem[pp]!=NULL) { pp=collision(p,c); if(pp<0){ printf(\第%d记录无法解决冲突\ continue; } } H->elem[pp]=&(a[i]); H->count++; printf(\第%d个记录冲突次数为%d。\\n\ } printf(\建表完成!\\n此哈希表容量为%d,当前表内存储的记录个数为%d.\\n\ benGetTime(); } void SearchHash1(HashTable* H,int c) {int p,pp;NA str; system(\ benGetTime(); printf(\请输入要查找记录的姓名:\\n\ scanf(\ p=Hash1(str); pp=p; while((H->elem[pp]!=NULL)&&(eq(str,H->elem[pp]->name)==-1)) pp=collision(p,c); if(H->elem[pp]!=NULL&&eq(str,H->elem[pp]->name)==1){ printf(\查找成功!\\n查找过程冲突次数为%d.以下是您需要要查找的信息:\\n\\n\ printf(\姓 名:%s\\n学号:%s\\n电话号码:%s\\n\ } else printf(\此人不存在,查找不成功!\\n\ benGetTime(); } void benGetTime(){ SYSTEMTIME sys; GetLocalTime( &sys ); printf( \d:d:d.d 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据结构课程设计--哈希表实验报告(2)在线全文阅读。
相关推荐: