数据结构-哈希表-007

1哈希表-通讯录

1.1哈希结点结构体定义

/*=====自定义数据类型=====*/
typedef struct person_information
{
    char name[32];
    char sex;
    int age;
    char tel[32];
    char addr[64];
}DATA_TYPE;
/*=====定义一个哈希数据结点=====*/
typedef struct hash_node
{
    DATA_TYPE data;//哈希结点数据域
    struct hash_node *pnext;//哈希结点指针域
}HASH_NODE;

1.2哈希函数

/*==========哈希函数==========*/
int hash_fun(char ch)
{
    return ch-'a';
}

1.3创建一个哈希表结点

/*==========创建一个哈希表结点==========*/
HASH_NODE* create_hash_table_node(DATA_TYPE data)
{
    HASH_NODE *pnode=NULL;

    /*创建一个哈希表结点空间*/
    pnode=malloc(sizeof(HASH_NODE));
    if(NULL==pnode)
    {
        perror("fail to malloc");
        return NULL;
    }

    /*哈希表结点初始化*/
    pnode->data=data;
    pnode->pnext=NULL;

    return pnode;
}

1.4哈希表插入

/*==========哈希表插入==========*/
int insert_hash_table(HASH_NODE *pnode,DATA_TYPE data)
{
    int addr=0;

    addr=hash_fun(data.name[0]);

    pnode->pnext=hash_table_head[addr];
    hash_table_head[addr]=pnode;

    return 0;
}

1.5哈希表遍历

/*==========哈希表遍历==========*/
void hash_for_each(void (*pfun)(HASH_NODE *))
{
    HASH_NODE *ptmp=NULL;
    int i=0;

    for(i=0;i<HASH_SIZE;i++)
    {
        ptmp=hash_table_head[i];
        while(1)
        {
            if(ptmp==NULL)
            {
                break;
            }

            pfun(ptmp);
            ptmp=ptmp->pnext;
        }
    }
}

/*==========遍历方式==========*/
void show_data(HASH_NODE *pnode)
{
    printf("%-10s\t%-10c\t%-10d\t%-10s\t%-20s\n",pnode->data.name,pnode->data.sex,pnode->data.age,pnode->data.tel,pnode->data.addr);
}

运行结果:
在这里插入图片描述

相关推荐

  1. 数据结构-

    2024-03-26 09:26:02       67 阅读
  2. 数据结构——

    2024-03-26 09:26:02       31 阅读
  3. 数据结构-

    2024-03-26 09:26:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 09:26:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 09:26:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 09:26:02       87 阅读
  4. Python语言-面向对象

    2024-03-26 09:26:02       96 阅读

热门阅读

  1. ubuntu22 安装docker26

    2024-03-26 09:26:02       39 阅读
  2. 笔记-《A Survey of Large Language Models》- 4 预训练

    2024-03-26 09:26:02       44 阅读
  3. LeetCode 面试经典150题 125.验证回文串

    2024-03-26 09:26:02       35 阅读
  4. LeetCode Hot100-哈希-两数之和

    2024-03-26 09:26:02       38 阅读
  5. 前端埋点解决方案

    2024-03-26 09:26:02       42 阅读
  6. Redis分布式锁实现

    2024-03-26 09:26:02       49 阅读
  7. C语言数据结构面试常见问题及答案

    2024-03-26 09:26:02       40 阅读
  8. Apache SeaTunnel 初识

    2024-03-26 09:26:02       43 阅读
  9. 模 块 篇

    2024-03-26 09:26:02       38 阅读
  10. iPhone 15 Pro LiDAR Module模组逆向(2024.3.23)

    2024-03-26 09:26:02       50 阅读
  11. 【Pandas】(5) eval和query

    2024-03-26 09:26:02       40 阅读
  12. 洛谷刷题 | B3621 枚举元组

    2024-03-26 09:26:02       41 阅读
  13. 每天一个数据分析题(二百二十七)

    2024-03-26 09:26:02       45 阅读