哈希表实验操作.doc_第1页
哈希表实验操作.doc_第2页
哈希表实验操作.doc_第3页
哈希表实验操作.doc_第4页
哈希表实验操作.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 源程序或过程: #include#include#define NIL 0#define DelNIL -1#define m 13#define n 20typedef structint key;LHashTable;void HashListinit(LHashTable HTn)int i;for(i=0;in;i+)HTi.key=NIL;void HashListclear(LHashTable HT)int i;for(i=0;in;i+)HTi.key=NIL;int Hash(int k)return(k%m);int HashListsearch(LHashTable HTn,int k)int d,temp;d=Hash(k);temp=d;while(HTd.key!=NIL)if(HTd.key=k)return d;elsed=(d+1)%n;if(d=temp)return -1;return -1;void HashListinsert(LHashTable HTn,int k)int d,temp;d=Hash(k);temp=d;while(HTd.key!=NIL&HTd.key!=DelNIL)d=(d+1)%n;if(d=temp)printf(哈希表无空间);exit(1);HTd.key=k;void HashListDelete(LHashTable HTn,int k)int d,temp;d=Hash(k);temp=d;while(HTd.key!=NIL)if(HTd.key=k)HTd.key=DelNIL;return;elsed=(d+1)%n;if(d=temp)break;printf(哈希表中无待删除元素%d,k);exit(1);void printHashList(LHashTable HTn)int i;for(i=0;in;i+)printf(%d ,i);printf(n);for(i=0;in;i+)printf(%d ,HTi);void main()int k;LHashTable HTn;HashListinit(HT);printf(请输入要插入到哈希表中的关键字,以0结束:n);scanf(%d,&k);while(k!=0)HashListinsert(HT,k);scanf(%d,&k);printf(所建立的哈希表长为20,哈希函数为H(key)=key%13n);printf(所建立的哈希表为:n);printHashList(HT);printf(n); printf(请输入要删除的关键字:n);scanf(%d,&k);HashListDelete(HT,k);printf(删除成功后的哈希表为:n);printHashList(HT);printf(n); 结果或分析:2 源程序或过程:#include#include#define NULL 0#define m 13#define n 20typedef struct nodetypeint key;struct nodetype*next;CHashTable;void HashListinit(CHashTable *HT)int i;for(i=0;in;i+)HTi=NULL;void HashListDelete(CHashTable *HT,int k);void HashListclesr(CHashTable *HT)CHashTable *p;int i;for(i=0;inext; HashListDelete(HT,p-key); p=HTi;int Hash(int k)return k%m;int HashListsearch(CHashTable *HT,int k)int d;CHashTable *p;d=Hash(k);p=HTd;while(p!=NULL)if(p-key=k)return 1;elsep=p-next;return 0;void HashListinsert(CHashTable *HT,int k)int d;CHashTable *p;d=Hash(k);p=(CHashTable*)malloc(sizeof(CHashTable);p-key=k;p-next=HTd;HTd=p;void HashListDelete(CHashTable *HT,int k)int d;CHashTable *p,*q;d=Hash(k);p=HTd;if(p=NULL)printf(哈希表中无%d,k);exit(1);if(p-key=k)HTd=p-next;free(p);return;elseq=p-next;while(q!=NULL)if(q-key=k)p-next=q-next;free(q);return;elsep=q;q=q-next;printf(哈希表中无%d,k);exit(1);printf(n);void printHashList(CHashTable *HT)int i;CHashTable *p;for(i=0;i,i);while(p)printf(%d-,p-key);p=p-next;printf(NULL);void main()int k;CHashTable *HT; HT=(CHashTable*)malloc(sizeof(CHashTable);HashListinit(HT); printf(请输入要插入到哈希表中的关键字,以0结束:n);scanf(%d,&k);while(k!=0)HashListinsert(HT,k);scanf(%d,&k);printf(所建立的哈希表长为20,哈希函数为H(key)=key%13n);printf(所建立的哈希表为:n);printHashList(HT);printf(n); printf(请输入要删除的关键字:n);scanf(%d,&k);HashListDelete(HT,k);printf(删除成功后的哈希表为:n);printHashList(HT);printf(n);结果或分析:请输入要插入到哈希表中的关键字,以0结束:19 14 23 1 68 20 84 27 55 11 10 79 0所建立的哈希表长为20,哈希函数为H(key)=key%13所建立的哈希表为:0-NULL1-79-27-1-14-NULL2-NULL3-55-68-NULL4-NULL5-NULL6-84-19-NULL7-20-NULL8-NULL9-NULL10-10-23-NULL11-11-NULL12-NULL13-NULL14-NULL15-NULL16-NULL17-NULL18-NULL19-NULL请输入要删除的关键字:27删除成功后的哈希表为:0-NULL1-79-1-14-NULL2-NULL3-55-68-NULL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论