博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
哈希表1
阅读量:5200 次
发布时间:2019-06-13

本文共 2662 字,大约阅读时间需要 8 分钟。

#include 
/* strcpy */ #include
/* malloc */ #include
/* printf */ #include "uthash.h" #define MAX_USERNAME_LEN (30)#define MAX_PHONENUM_LEN (30)#define ERROR_PARAMETER (-1)#define ERROR_USER_EXISTS (-2)#define ERROR_USER_NOT_EXISTS (-3)#define SUCCESS (0)typedef struct UserAndPhone{ char userName[MAX_USERNAME_LEN]; char phoneNumber[MAX_PHONENUM_LEN]; }UserAndPhone;typedef struct PhoneBook { char userName[MAX_USERNAME_LEN]; /* key */ char phoneNumber[MAX_PHONENUM_LEN]; UT_hash_handle hh; /* makes this structure hashable */ }PhoneBook; PhoneBook* users = NULL; /* 用户及电话的哈希表 */UserAndPhone* userAndPhone = NULL; /* 存放遍历的用户及电话 */int userCnt = 0; /* 存放用户数 *//***********************************************************************功 能:将新的用户、电话号码插入到哈希表****输入参数:phoneBook存放用户名、电话号码和哈希句柄,该参数由用户动态申请内存****返 回 值:-1参数错误,-2用户已存在、0添加成功*******************************************************************/int InsertUserAndPhone(PhoneBook* phoneBook){ if ((NULL == phoneBook) || (NULL == phoneBook->userName) || (NULL == phoneBook->phoneNumber) || (0 == strlen(phoneBook->userName)) || (0 == strlen(phoneBook->phoneNumber))) { printf("error parameter.\n"); return ERROR_PARAMETER; } PhoneBook* tmp; HASH_FIND_STR(users, phoneBook->userName, tmp); if (NULL != tmp) { printf("the userName[%s] already exist.\n", phoneBook->userName); return ERROR_USER_EXISTS; } HASH_ADD_KEYPTR(hh, users, phoneBook->userName, strlen(phoneBook->userName), phoneBook); ++userCnt; return SUCCESS;}/**********************************************************************************************功 能:根据用户名查找电话号码******输入参数:userName表示要查询的用户名****** phoneNumberFound 用来存放查找到的电话号码(由调用者保证空间足够大)******返 回 值:-1参数错误,-3用户不存在,0找到*****************************************************************************************/int findPhoneNumber(char* userName, char *phoneNumberFound){ if ((NULL == userName) || (0 == strlen(userName)) || (NULL == phoneNumberFound)) { printf("invalid parameter.\n"); return ERROR_PARAMETER; } PhoneBook* tmp; HASH_FIND_STR(users, userName, tmp); if (NULL == tmp) { printf("the userName[%s] does not exist.\n", userName); return ERROR_USER_NOT_EXISTS; } else { strcpy(phoneNumberFound, tmp->phoneNumber); return SUCCESS; } }

 

转载于:https://www.cnblogs.com/gardonkoo/p/7611179.html

你可能感兴趣的文章
Oracle SQL查询,日期过滤条件要注意的一点
查看>>
链表快排
查看>>
链表操作合集
查看>>
leetcode852 C++ 20ms 找最高峰 序列先增后减
查看>>
JavaScript深入系列(一)--原型和原型链详解
查看>>
一点感想
查看>>
产生随机数
查看>>
vm center(VC)5.1登陆密码忘记了怎么办?
查看>>
TFS 2015 敏捷开发实践 – 看板的使用
查看>>
UINavigationController的简单使用
查看>>
Python命名规范
查看>>
50款漂亮的国外婚礼邀请函设计(上篇)
查看>>
MD5加密简单算法
查看>>
安装Qcreator2.5 + Qt4.8.2 + MinGW_gcc_4.4 (win7环境)
查看>>
代码检查
查看>>
滚动条
查看>>
程序员的自我修养九Windows下的动态链接
查看>>
记一次修改数据库引擎的方法
查看>>
开发工具 idea 激活方法
查看>>
BZOJ 4052: [Cerc2013]Magical GCD
查看>>