ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:18.77KB ,
资源ID:9180130      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9180130.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计报告哈希表.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计报告哈希表.docx

1、课程设计报告哈希表(此文档为word格式,下载后您可任意编辑修改!) 数据结构课程设计 (哈希表的设计) 院 系 专 业 班 级 学 生 姓 名 学 号 课程设计日期:2011年 6月26日至 2011年 7 月 7 日目录1、问题描述.32、需求分析 1、基本要求3 2、测试数据.33、概要设计.34、详细设计.45、测试分析.11六、课程设计总结.13七、附录(源代码).141、问题描述针对自己班级体中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。2、需求分析基本要求: 假设人名为中国姓名的汉语拼音模式。待填入哈希表的人名共有30个,取平均查找长度的上限为2

2、。哈希函数用除留余数法构造,用链表法处理冲突。测试数据: 输入30个人的姓名拼音,即30个字符串,然后用除留余数法构建哈希表并用链表法处理冲突,最后将结果输出,程序自动计算查找长度的总数和平均查找长度,然后用户可以根据需求进行查找操作。3、概要设计 4、详细设计头文件#include #include #include #include #define P 30 /*除数余留法中的除数*/#define NULLKEY 0 #define MAX 30 /*人名个数*/#define hashlen 30 /*哈希表长度*/int sum=0,k=0;typedef struct Node /

3、*哈希表结构体*/ char key_code10; /*哈希表地址*/ struct Node *next;Node;typedef struct hashtable /*创建哈希表*/ int key; struct Node *next;HashTableMAX;int Hash(int key) int mode = key % P; /*除留余数法得到的余数*/ return mode;void Hash_Init(HashTable ht) /*哈希表初始化*/ int i; for(i = 0; i key_code); Node *p; p=(Node*)malloc(size

4、of(Node); if(htkey.key = NULLKEY) htkey.key = key; htkey.next = node; k+; else if(htkey.key = key) p = htkey.next; k+; while(p-next!= NULL) p = p-next; k+; p-next = node; k+; return 1;Node* Hash_Search(HashTable ht, int key) /*查找函数*/ int p0 = Hash(key); if(htp0.key = NULLKEY) sum+;return NULL; else

5、if(htp0.key = p0) Node *p = htp0.next; while(p != NULL) if(CharToInt(p-key_code) = key) sum+; return p; p = p-next; sum+; return NULL;int Hash_Create(HashTable ht) /*哈希表长度*/ int i; Node *node; Hash_Init(ht); printf(请输入姓名:); /*输入30个姓名*/ for(i=0;ikey_code); node-next = NULL; Hash_Insert(ht, node); pri

6、ntf(nCreate Successfully!n); return 1;int hash_output(HashTable h) /*哈希表的输出部分*/ Node *a; int i,j,count2=0; a=(Node*)malloc(sizeof(Node); j=0; for(i=0;i%s,(*a).key_code); a=(*a).next; j+; count2+=j; printf(n); return count2;void Hash_Link() /*链表法构造函数*/ int key; int i; Node *node; HashTable ht; Hash_C

7、reate(ht); hash_output( ht); printf(count=%dn,k); /*查找总长度*/ printf(ASL=%d/8n,k); /*平均查找长度*/ printf(请输入要查找的数据:); /*输入查找的姓名*/ scanf(%s,&key); node = Hash_Search(ht, key);printf(查找次数:%dn,sum); if(node != NULL) printf(查找成功!); else printf(查找不成功!); void hash_create(int h,int status,int data) int address;

8、int di; address=data%P; if(statusaddress=0) haddress=data; statusaddress=1; else for(di=1;di=hashlen-1;di+) address=(data%P)+di)%hashlen; if(statusaddress=0) haddress=data; statusaddress=1; break; return ;int hash_search(int h,int key) int address, di; address=key % P; if(haddress=key) /*哈希表中元素与查找元素

9、是否相等*/ return 1; else for(di=1;di=hashlen) return 0;int main() /*主函数*/ printf(ttt*n); printf(ttt 哈希表设计n); printf(n); printf(ttt*n); printf(n);Hash_Link(); 5、测试分析测试数据:随机输入的30个人的姓名拼音测试过程:输入30个人的姓名拼音,观察输出结果,并进行查找操作测试结果:主界面:哈希表:6、课程设计总结 这次数据结构课程设计持续了两周,在这两周中付出了很多,同样也得到了很多。 这次课程设计巩固和加深了对数据结构的理解,提高综合运用本课程

10、所学知识的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。在本次课程设计中,不得不提的还有合作。虽说课题不是太难,但有时自己想不明白,通过大家的讨论可以更快和更有效率的解决问题,而且映象还很深刻。所以以后要多多和同学讨论,毕竟自己的不可能想得很全。 通过这次课程设计,让我学到了很多,让我知道了认真上好专业实验课的重要性,以后多在实践中锻炼自己,毕竟说和做还是有很大差距的,而且写程序的过程中要考虑周到,严密。在做设计的时候要有信心,有耐心,切勿浮躁。认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用

11、。在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。 7、附录(程序源代码): #include #include #include #include #define P 11#define NULLKEY 0#define MAX 20#define hashlen 13int sum=0,k=0;typedef struct employee int key_code; struct employee *next;Employee;typedef struct hashtable int key; struct employee *next;Has

12、hTableMAX;int Hash(int key) int mode = key % P; return mode;void logo() printf(ttt*n); printf(ttt 哈希表的基本操作n); printf(n); printf(ttt n); printf(ttt*n); printf(n);void Hash_Init(HashTable ht) int i; for(i = 0; i key_code); Employee *p; p=(Employee*)malloc(sizeof(Employee); if(htkey.key = NULLKEY) htke

13、y.key = key; htkey.next = em; k+; else if(htkey.key = key) p = htkey.next; k+; while(p-next!= NULL) p = p-next; k+; p-next = em; k+; return 1;Employee* Hash_Search(HashTable ht, int key) int p0 = Hash(key); if(htp0.key = NULLKEY) sum+;return NULL; else if(htp0.key = p0) Employee *p = htp0.next; whil

14、e(p != NULL) if(p-key_code = key) sum+; return p; p = p-next; sum+; return NULL;int Hash_Create(HashTable ht) int i; Employee *em; Hash_Init(ht); printf(请输入数据:); for(i=0;ikey_code); em-next = NULL; Hash_Insert(ht, em); printf(nCreate Successfully!n); return 1;void ConFun() printf(请按任意键继续.); getch();

15、int hash_output(HashTable h) Employee *a; int i,j,count2=0; a=(Employee*)malloc(sizeof(Employee); j=0; for(i=0;i%d,(*a).key_code); a=(*a).next; j+; count2+=j; printf(n); return count2;void Hash_Link() int key; Employee *em; HashTable ht; Hash_Create(ht); hash_output( ht); printf(count=%dn,k); printf

16、(ASL=%d/30n,k); printf(请输入要查找的数据:); scanf(%d,&key); em = Hash_Search(ht, key);printf(查找次数:%dn,sum); if(em != NULL) printf(查找成功!); else printf(查找不成功!); ConFun();void hash_create(int h,int status,int data) int address; int di; address=data%P; if(statusaddress=0) haddress=data; statusaddress=1; else fo

17、r(di=1;di=hashlen-1;di+) address=(data%P)+di)%hashlen; if(statusaddress=0) haddress=data; statusaddress=1; break; return ;int hash_search(int h,int key) int address, di; address=key % P; if(haddress=key) return 1; else for(di=1;di=hashlen) return 0;void SelectModel() int i; do system(cls); logo(); fflush(stdin); printf(t(1):除数余留法创建哈希表n); printf(n); printf(t(2):退出系统n); printf(n); printf(t 请选择序号:); scanf(%d,&i); switch(i) case 1:Hash_Link();break; case 2: printf(感谢您的使用,欢迎下次再来n); exit(0); default:printf(t请输入1-6n); ConFun(); break;while(1);int main() SelectModel();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1