请大神帮忙迅雷看看崩溃哈希表的实现为什么会崩溃?

数据结构哈希表,求大神,急急急_百度知道
数据结构哈希表,求大神,急急急
以下关键字序列建立哈希表{16,38},49,58,36,24,50,26,画出此哈希表,用二次探测再散列法处理冲突,45,29:请给出哈希函数,55,要求填充率为80%,37
提问者采纳
system(&%d&\
q=(p-i*i)%HASHSIZE;
if((fp=fopen(&elem[pp];):\在通讯录里修改某人信息{
int p:CreateHash(H,H-&
(H-&n学号.h&);i&cls&Modify(H;)!=NULL)&&(eq(NAME;在通讯录里查找姓名关键字;);cls&quot,a[i]; m=(int)name[0];elem[pp],c),c);请输入修改后记录的电话号码!='请输入第%d个记录的姓名;)
fprintf(;elem[pp]-&);
printf(&.\姓名; system(&&\);name)==1)
printf(&\&#47,H-&
/elem[i]-&elem)[i];
case 3;;;NUM_BER;/);
scanf(&);n&若哈希地址冲突;;}void getin(Stu * a)
//&#92,c),以人的姓名为关键字;
printf(& typedef 掩饰数组类型typedef struct
&#47,H-&调用DOS命令CLS能够清屏 printf(&quot!;
while((H-&tel).
显示所有用户信息
*&quot,i+1);\
printf(&人名的最大长度#define HASHSIZE 60
} m=m%HASHSIZE;0)
printf(&\i++)
c=0,a[i],int c)
/&#92,你能在n*
switch(num)
printf(&);cou++;
getchar();t%s&#92:%s\n&n请输入要查找记录的姓名;n&在通讯录里查找姓名关键字;/;;
scanf(&quot,i+1;\
system(&pause&quot,H-&
&#47,H-&数据元素存储基址);
/n&quot,将信息存入
H-&gt:%s\/n*
/tel);n电话号码;n&
printf(&quot.name),H-&),&num);NUM_BER;n*
scanf(&quot,Stu* a)
/CLS&quot!:&#92:%s&#92!=NULL&&eq(请输入%d个记录的学号,a[i];;i&lt,传入一个record的指针;
printf(&NA NAME:&#92,i+1);打开文件 {
fclose(fp1);elem[pp],a[i]; system(&);NA&#92,H-&gt,str),&/);n此人不存在;
printf(&quot,H-&gt,若查找成功;n学号,&quot,NA y){ if(strcmp(x,c);t%s&quot,NAME);n&;);;请输入%d个记录的学号:c=0.tel);&关闭文件 } else {
fp2=fopen(&quot!;i&请输入第%d个记录的电话号码,然后针对这个指针指向的内存记录进行操作{请输入修改后记录的学号,H-&n&;HASHSIZE;elem[pp]!&,建立相应的哈希表{n*
【9】:Create(a) ;/&#92:Save(H);
case 2,NAME);求得哈希地址;):%s\%d&
scanf(&n&);
printf(&quot.
修改用户信息
*&quot,i+1);/
H-&n***************************班级通讯录****************************&n此哈希表容量为%d;n\记录{ NA
printf(&quot!;
case 8;); break,H-&如果不存在;#include&n学号:%s\n&);/\t学号&#92,i+1)!=NULL)
fprintf(&#92,H-&elem)[pp]-&,a[i];
printf(&n输入要添加的个数;name)==1)
printf(&quot!=NULL&&eq(NAME;
scanf(&quot,c)!=NULL&&eq(NAME;
case 9;:output(a),显示信息{n&i&;
printf(&n以下是您需要修改的信息,),int c)
&#47,c):return 0,int c)
/ i = 1;\}Status collision(/ else return UNSUCCESS;%s&
m++;elem[pp]-&stdio. printf(&
printf(&第%d记录无法解决冲突&elem[pp]-&gt,当前表内存储的记录个数为%d;
} } system(&需要显示冲突次数时输出tel);2+1;n*****************************************************************&0&#39:\二次探测法处理冲突{\/
m=0,p,HASHSIZE:getin(a);/n电话号码;
删除用户信息
*&2+1;):%s\ printf(&建表;&#92,c);0'siz=HASHSIZE;n*
【2】;elem[i]-&elem[pp]-&添加成功;将记录保存到指定文件{
system(&;姓名;;
fclose(fp););学生电话号码,c);n查找成功,a[i];cou=0;/%s&/
system(&quot.
printf(&创建新的通讯录{ system(&quot:%s\
for(i=0:\
while((H-&Status eq(NA x:%s&#92.h&;);
fprintf(fp,H-&
scanf(&void Create(Stu* a)
/输入错误;);;
if(q&elem[pp]-&/%s& while(i&lt,i+1).txt&quot.xuehao);姓名;%d&n&quot,c用来记录冲突次数;}void SearchHash(HashTable* H,int c)
printf(&\
printf(&elem[pp]-&gt,i=0;第%d个记录冲突次数为%d:\);cls&;;NUM_BER+NUM_BER1.
创建用户信息
*&quot,删除不成功;
H-&=0)%s&}void CreateHash(HashTable* H;&#92,H-&/
for(i=0!成功储存.tel)!\elem[pp]-&n姓名\
} else printf(&quot,就创建一个);\n*****************************************************************&elem[pp]-&n以下是您需要要删除的信息; for( i=0;);r&
p=Hash(a[i]:\\tel)==-1))
pp=collision(p;&#47,i+1).h&n&,a[i];
if(H-&),H-&&#92!=NULL)
/#include&,*fp2,a[i];%s&quot,c);
scanf(&);/t电话号码&);n&)).name);
/***********************************************\%s&;\ i=c/n&删除成功,m;);name);name,&quot:
*&quot,进行冲突处理 for(i=0;
printf(&i++)
if((H-&xuehao); NA xuehao,修改不成功;
p=Hash(NAME);
printf(&n&n*
温馨提示;}void Modify(HashTable* H;);
fprintf(0');tel)==1)
printf(&w&),&
printf(&}S if((fp1=fopen(&quot:%s\调用DOS命令CLS能够清屏 /
printf(& scanf(&quot!=NULL)
pp=collision(p;/tel);n*
【6】:\t\
i=c&#47,q; \for(i=0;
scanf(&/\
printf(&quot.txt找到相应纪录\强制转化成数字 while(name[i];);
HashTable *H;&gt。&#92,y)==0)
return SUCCESS;
/name),进行冲突处理
if(pp&}void Delete(HashTable* H; n&;
scanf(&quot,跳入下一循环
printf(&);elem[pp]-&抱歉;;n&i++)
H-&elem[pp]-&cou);w&quot.
以姓名建立哈希表(二次探测法解决冲突)*&
FILE*;当前容量}HashTable,
scanf(&请输入修改后记录的姓名;#define MAXSIZE
20#define MAX_SIZE 20
printf(&i&
/\); FILE *fp1;
system(&quot,c);%s&&#92!=NULL)&&(eq(NAME;);
return UNSUCCESS;),
/%s&),若查找成功;);n电话号码;Delete(H;);n&n*
【1】; return 0,请重新输入;
printf(&pause&\
printf(&i++) {
printf(&elem[i]-&gt,H-&
case 7;n&n&
printf(&elem[i]=NULL;无法解决冲突;/建立哈希表{ Stu *elem[HASHSIZE];elem[pp]-&);%s&tel[0]='
printf(&elem[pp]-&关键字 NA
/n&n建表完成.
查找用户信息
*&quot!\ }
printf(&/cls&quot.
for(i=0;);n&/cls&quot,&quot,a);n*
【3】;name)==-1))
pp=collision(p;n&quot:&#92!=&#39!;;
q=(p+i*i)%HASHSIZE;n&/n此人不存在;
pp=p;elem[pp],a[i];name[0]='记录的个数
全局变量Status NUM_BER1;
printf(&quot,&NUM_BER);2+1;n&
} while (1) {;;n&定义表长#define SUCCESS 1#define UNSUCCESS -1typedef int Status,i+1);\/若哈希地址冲突!\\;xuehao);/);
else i=c&#47:\
while((H-&n查找过程冲突次数为%d.以下是您需要要查找的信息:%s&#92,查找不成功;}Status NUM_BER;pause&\
fprintf(当前数据元素个数 int siz:c=0;n&quot.name);录入通讯录的内容.tel);n&
(H-&);n&elem)[pp]-&/cls&
/):\elem[pp];n此人不存在;n&n&elem[pp]-&elem[pp]=&(a[i]);elem[pp]-&gt:c=0.
添加用户信息
*&\n\==================== 班级通讯录 ===================\0'
c++;n&quot,&
&#47,H-&n请输入一个任务选项&请输入第%d个记录的电话号码;n恭喜你;
int i!\修改成功;请输入第%d个记录的姓名;n&%s&&#47!&}void Save(HashTable * H)
/SearchHash(H;elem[pp];
printf(&);
printf(&}int Hash(NA name){ int i,H-&
if(H-&gt,保存记录失败:&#92.txt&record,H-&学生学号;;elem[pp]-&t\ }}void output(Stu* a)
/;为现有类型添加一个同义字typedef char NA[MAX_SIZE];xuehao:%s&#92!&
p=Hash(NAME),p=-1;
case 5;&#47#include&lt,&
pp=p:%s\i++)
printf(&quot!\CLS&n%s\\
printf(&quot、5;
printf(&quot:&#92,H-&&#92,
/tel);学生姓名、6操作前 请先输出3
*&n&quot,显示信息然后删除{输入要添加的个数;n&quot,&NUM_BER);)););
printf(&elem[pp]-&gt!&#92,采用二次探测法解决冲突
&#47,c;\/elem[pp]-&
p=Hash(str);\
} }int main(){
Stu a[MAXSIZE];
/n请输入要删除记录的姓名;
printf(&quot,H-&HASHSIZE;HASHSIZE)
if(c%2==0)
c++:\%s&
&#47.n请输入要修改记录的姓名;
printf(&i&\)
m+=(int)name[i];显示输入的用户信息{\;););
if(q&);elem[pp]-&冲突处理函数; } printf(&!;
printf(&quot!=NULL)&&(eq(.txt
fclose(fp2);NA NAME;
H=(HashTable*)malloc(sizeof(HashTable));n*
【5】,&/;&#92,H-&
system(&;%s&);查找表中记录类型typedef struct
/==================== 班级通讯录 ===================\NUM_BER;=0) return q.xuehao);n*
【4】:&name)==-1))
pp=collision(p;
printf(&quot,flag=1;n\
while(H-&gt:&#92!&);
printf(&i++)
printf(&&#47.txt&quot:&#92
提问者评价
虽然要的不是代码,但是,阿里嘎都
来自团队:
其他类似问题
为您推荐:
哈希表的相关知识
其他2条回答
要是有钱就好使了。
你要多少,我给你烧。。
不会。。。。。。。。。。。。。。。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 迅雷看看崩溃 的文章

 

随机推荐