哈希查找

ゝ一纸荒年。 2022-05-23 05:27 320阅读 0赞

就写了代码:是模仿室友的,有些还有问题,明天改进…..

  1. #include<stdio.h>
  2. #include<time.h>
  3. #include<stdlib.h>
  4. #define Max 11
  5. #define N 8
  6. int hashtable[Max];
  7. int func(int value)
  8. {
  9. return value%Max;
  10. }
  11. int search(int key)
  12. {
  13. int pos;
  14. int t;
  15. pos=func(key);
  16. t=pos;
  17. while(hashtable[t]!=key&&hashtable[t]!=-1)
  18. {
  19. t=(t+1)%Max;
  20. if(pos==t)
  21. return -1;
  22. }
  23. if(hashtable[t]=-1)
  24. return NULL;
  25. else
  26. return t;
  27. }
  28. void creathash(int key)
  29. {
  30. int pos,t;
  31. pos=func(key);
  32. t=pos;
  33. while(hashtable[t]!=-1)
  34. {
  35. t=(t+1)%Max;
  36. if(pos==t)
  37. {
  38. printf("哈希表已经满\n");
  39. return;
  40. }
  41. }
  42. hashtable[t]=key;
  43. }
  44. void main()
  45. {
  46. float flag[50];
  47. int i,j,t;
  48. for(i=0;i<Max;i++)
  49. hashtable[i]=-1;
  50. for(i=0;i<50;i++)
  51. flag[i]=0;
  52. srand((unsigned long)time(0));
  53. i=0;
  54. while(i!=N)
  55. {
  56. t=rand()%50;
  57. if(flag[t]==0)
  58. {
  59. creathash(t);
  60. printf("%2d:",t);
  61. for(j=0;j<Max;j++)
  62. printf("(%2d)",hashtable[j]);
  63. printf("\n");
  64. flag[t]=1;
  65. i++;
  66. }
  67. }
  68. printf("请输入你想查找的元素:\n");
  69. scanf("%d",&t);
  70. if(t>0&&t<50)
  71. {
  72. i=search(t);
  73. if(i!= -1)
  74. printf("查找成功! 其位置是:%d\n",i);
  75. else
  76. printf("查找失败!");
  77. }
  78. else
  79. printf("输入有误!");
  80. }

明天再改下,还有些错误….

发表评论

表情:
评论列表 (有 0 条评论,320人围观)

还没有评论,来说两句吧...

相关阅读

    相关 查找

    哈希查找是一种通过设计所存储数据元素 与其存放地址之间的映射关系(函数关系)来实现高效查找的方法。比如我需要查询一个数460,那么根据先前存储时所采取的映射关系就可以准确地得到

    相关 详解查找

    哈希表查找 定义 基本概念 实现方法 1、定义 > 哈希表查找又叫散列表查找,通过查找关键字不需要比较就可以获得需要记录的存储位置,它是通过在记

    相关 表的查找

    引入哈希表 前面查找方法共同特点:通过将关键字值与给定值比较,来确定位置。效率取决比较次数。 理想的方法是:不需要比较,根据给定值能直接定位记录的存储位置。 这样,