#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"hash.h"
Hash *CreateHash()
{
Hash *phash = (Hash*)malloc(sizeof(Hash));
if ( NULL == phash)
{
return phash;
}
memset(phash,0,sizeof(Hash));
return phash;
}
void Destroy(Hash *phash)
{
if ( NULL == phash )
{
return;
}
int i = 0;
HNode *pNode = NULL;
HNode *pTmp = NULL;
for ( i = 0 ; i <HASH_SIZE; i++ )
{
pNode = phash->table[i];
if ( NULL == pNode)
{
continue;
}
while ( NULL != pNode)
{
pTmp = pNode->pNext;
free(pNode);
pNode = pTmp;
}
}
free(phash);
phash = NULL;
pNode = NULL;
pTmp = NULL;
}
HNode* CreateNode(data_t data)
{
HNode*pNode = (HNode*)malloc(sizeof(HNode));
if ( NULL == pNode)
{
return pNode;
}
memset(pNode,0,sizeof(HNode));
pNode->data = data;
return pNode;
}
int InsertHash(Hash *phash,data_t tdata)
{
if ( NULL == phash )
{
return HASH_ERR;
}
int index = tdata.UserName[0] - 'a';
HNode *pNode = CreateNode(tdata);
pNode->pNext = phash->table[index];
phash->table[index] = pNode;
return HASH_OK;
}
int DeleteHash(Hash *phash,data_t pdata)
{
if ( NULL == phash )
{
return HASH_ERR;
}
int index = pdata.UserName[0] - 'a';
HNode *pNode = phash->table[index];
if ( NULL == pNode)
{
printf("not found\n");
return HASH_ERR;
}
if ( 0 == strcmp(pNode->data.UserName,pdata.UserName)
&& (0 == strcmp(pNode->data.UserPwd,pdata.UserPwd)))
{
phash->table[index] = pNode->pNext;
free(pNode);
pNode = NULL;
return HASH_OK;
}
else
{
while ( NULL != pNode->pNext)
{
HNode *pDel = pNode->pNext;
if ( 0 == strcmp(pDel->data.UserName,pdata.UserName)
&& (0 == strcmp(pDel->data.UserPwd,pdata.UserPwd)))
{
pNode->pNext = pDel->pNext;
free(pDel);
pDel = NULL;
return HASH_OK;
}
pNode = pNode->pNext;
}
}
printf("not found\n");
return HASH_ERR;
}
void ShowHash(Hash *phash)
{
if ( NULL == phash)
{
return;
}
HNode *pNode = NULL;
int i = 0;
for ( i = 0 ; i <HASH_SIZE ; i++ )
{
pNode = phash->table[i];
if ( NULL == pNode)
{
continue;
}
while ( NULL != pNode)
{
printf("%s %s\n",pNode->data.UserName,pNode->data.UserPwd);
pNode = pNode->pNext;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
哈希表的数据结构,可以直接编辑使用调试。
共3个文件
c:2个
h:1个
需积分: 13 10 下载量 81 浏览量
2017-12-01
15:37:11
上传
评论 1
收藏 2KB RAR 举报
温馨提示
大学时写的一个哈希表,分享大家,可以直接进行gcc调试。只需改改main函数。
资源推荐
资源详情
资源评论
收起资源包目录
hash.rar (3个子文件)
hash.h 628B
main.c 1KB
hash.c 3KB
共 3 条
- 1
资源评论
小熊之怒
- 粉丝: 14
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功