哈希表的实例 (二)

2014-11-24 03:23:27 · 作者: · 浏览: 6
ata[a].num,num);
strcpy(h1.data[a].address,address);
strcpy(h1.data[a].name,name);
h1.count++;

}
puts("\t成功将电话记录导入电话簿1!");
disp(h1);
fclose(fp);
if((fp=fopen("1234.txt","r+"))==NULL)
{
puts("导入电话记录失败");
exit(0);
}
fscanf(fp,"%d",&n);
for(i=0;i {
fscanf(fp,"%s%s%s",name,address,num);
HashSearch2(h2,num,a);

strcpy(h2.data[a].num,num);
strcpy(h2.data[a].address,address);
strcpy(h2.data[a].name,name);
h2.count++;

}
puts("\t成功将电话记录导入电话簿2!");
disp(h2);
fclose(fp);
printf("按任意键继续!\n");
getch();}
flag=0;
break;
case 2:
printf("添加电话记录到电话簿1:\n");
printf("请输入您要添加电话记录的数目:\n");
scanf("%d",&n);
for(i=0;i {
printf("请输入第%d条电话记录的姓名、地址和电话号码(用空格隔开)\n",i+1);
scanf("%s%s%s",name,address,num);
if(HashSearch1(h1,num,a))
{
printf("已存在");
i--;
}
else
{
strcpy(h1.data[a].num,num);
strcpy(h1.data[a].address,address);
strcpy(h1.data[a].name,name);
h1.count++;
}
}
disp(h1);
printf("按任意键继续!\n");
getch();
break;
case 3:printf("添加电话记录到电话簿2:\n");
printf("请输入您要添加电话记录的数目\n");
scanf("%d",&n);
for(i=0;i {
printf("请输入第%d条电话记录的姓名、地址和电话号码(用空格隔开)\n",i+1);
scanf("%s%s%s",name,address,num);
if(HashSearch2(h2,num,a))
{
printf("已存在");
i--;
}
else
{
strcpy(h2.data[a].num,num);
strcpy(h2.data[a].address,address);
strcpy(h2.data[a].name,name);
h2.count++;
}
}
disp(h2);
printf("按任意键继续!\n");
getch();
break;
case 4:disp(h1);
printf("请输入您要在电话簿1中查找的人的电话号码:\n");
scanf("%s",num);
printf("\n");
if(m=HashSearch1(h1,num,a))
{
printf("查找的结果为:\n");
printf("您要查找的人的姓名、地址和电话号码分别为:\n%s,%s,%s\n",h1.data[m].name,h1.data[m].address,h1.data[m].num);
}
else
printf("对不起,没有您要找的人!\n");
printf("按任意键继续!\n");
getch();
break;
case 5:disp(h2);
printf("请输入您要在电话簿2中查找的人的电话号码:\n");
scanf("%s",num);
printf("\n");
if(m=HashSearch2(h2,num,a))
{
printf("查找的结果为:\n");
printf("您要查找的人的姓名、地址和电话号码分别为:\n%s,%s,%s\n",h2.data[m].name,h2.data[m].address,h2.data[m].num);
}
else
printf("对不起,没有您要找的人!\n");
printf("按任意键继续!\n");
getch();
break;
case 6:printf("在电话簿1中查找的ASL为:\n");
printf("%d %d\n",compasl(h1),h1.count);
printf("按任意键继续!\n");
getch();
break;
case 7:printf("在电话簿2中查找的ASL为:\n");
printf("%d %d\n",compasl(h2),h2.count);
printf("按任意键继续!\n");
getch();
break;
}
}
}

#include
#include
#include
#include
#define Size 11
typedef struct{
char name[30];
char address[20];
//float num;
char num[30];
int c;//统计比较次数
}record;
typedef struct{
record data[Size];
int count;
int size;
}Hashtable;
void init(Hashtable &h)
{
for(int i=0;