已有17人关注
到底哪里错了老师
发表在C++图书答疑 2018-01-20 悬赏:1 学分 《C++从入门到精通(第3版)》第8章 构造数据类型
是否精华
版块置顶:


#include<stdio.h>

#include<stdlib.h>

#define MAX 20

typedef struct

{

   int num;

   char name[20];

}ElemType;

typedef struct

{

  ElemType *elem;

  int count;

  int sizeindex;

}HashTable;

int Hash(int num)

{

  int p;

  p=num%5;

  return p;

}

void lnitHash(HashTable *H)

{

  int i;

  H->elem=(ElemType *)malloc(MAX*sizeof(ElemType));

  H->count=0;

  H->sizeindex=MAX;

  for(i=0;i<MAX;i++)

 H->elem[i].num=0;

}

int SearHash(HashTable H,int key,int *p)

{

  int c=0;

  *p=Hash(key);

  while(H.elem[*p].num!=key && H.elem[*p].num!=0)

  {

    c=c+1;

if(c%2==1)

*p=*p(c+1)*(c+1)/4;

else

*p=*p-(c*c)/4;

  }

  if(H.elem[*p].num==key)

 return 1;

  else

 return 0;

}

void lnserHash(HashTable *H,ElemType e)

{

  int p;

  SearHash(*H,e.num,&p);

  H->elem[p]=e;

  ++H->count;

}

void main()

{

  HashTable H;

  int p,key,i;

  ElemType e;

  lnitHash(&H);

  for(i=0;i<3;i++)

  {

loop;printf("输入第%d个学生学号\n",i+1);

     scanf("%d",&e.num);

if(!SearHash(H,e.m=num,&p))

{

  printf("输入第%d个学生名字\n",i+1);

  scanf("%s",e.name);

  lnsertHash(*H,e);

}

else

{

  perintf("改学院已存在:\n");

  goto loop;

}

  }

  printf("请输入你要查找的学生学号:\n");

  scanf("%d",&key);

  if(SearHash(H,key,&p))

  {

   printf("查找成功!学生的姓名是%s\n",H.elem[p].name);

   printf("学生所在表中的位置是%d\n",p);

  }

  else

 printf("查找失败!你要查找的学生不存在!\n");

}


分享到:
精彩评论 2
高运来
学分:1091 LV8
2018-01-20
沙发

QQ图片20180120224329.jpg

少发一张


高运来
学分:1091 LV8
2018-01-20
板凳

哈希查找法,

IMG_20180120_230544.jpg

运行后的效果

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照