当前位置:   article > 正文

C语言项目 电话查询系统 哈希表实现(项目要求 + 运行界面 + 代码分析 + 完整代码)_电话号码查询系统c语言程序源码

电话号码查询系统c语言程序源码

电话查询系统

关注博主不迷路,博主带你码代码!

1. 项目要求

  1. 设每个记录有以下数据项:用户名、电话、地址
  2. 从键盘输入各个记录,以电话号码为关键字建立哈希表
  3. 能够增加、修改、删除给定电话号码的相关记录

2. 数据样例

7
17718881666 chen hunan
12837192867 yuan hubei
18998239899 duan loudi
13689721388 qian hefei
19999999999 zhang beijing
12673678523 liu liuan
13876352729 luo fujian
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 运行界面

  1. 菜单页面
    在这里插入图片描述

  2. 添加电话
    在这里插入图片描述

  3. 查询电话
    在这里插入图片描述

  4. 修改信息
    在这里插入图片描述

  5. 删除电话
    在这里插入图片描述

  6. 退出系统
    在这里插入图片描述

4. 代码分析

  1. 哈希函数
    key 值的确定是按照电话号码的求和 % MAXSIZE所得的
    % MAXSIZE 的原因是因为放置下标越界

    int GetHashKey(char ar[])
    {
    int len = strlen(ar);
    int key = 0;
    int i;
    for(i = 0; i < len; i ++ )
    {
    key += ar[i] - ‘0’;
    }
    return key % MAXSIZE;
    }

  2. 冲突处理
    哈希冲突处理,这里采用的是二次探测法,将 Cay 分为两种情况,当 Cay 为奇数的时候,我们向后探测,当 Cay 为偶数的时候,我们向前探测,不管在向前还是向后探测,我们都要对其取模,防止下标越界,但是在向后探测的时候,可能是负数,为了方便取模,我们对于负数的时候就直接跳过就好了。

    //冲突处理,二次探测再散列
    int HandleCollision(HashTable table, int key)
    {
    Czy = 1; //从2,3,4,5,…
    while(1)
    {
    Czy ++ ; //从2,3,4,5,…
    if(Czy % 2 == 0)
    {
    if(table->data[

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/84890
推荐阅读
相关标签
  

闽ICP备14008679号