⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myhashtable.h

📁 基于btree索引算法的数据库代码
💻 H
字号:
/*
*
* myhashtable.h 哈希表 
*
* author:lin shao chuan (email:lsccsl@tom.com, msn:lsccsl@163.net)
*
*/


#ifndef __MYHASHTABLE_H__
#define __MYHASHTABLE_H__


#include "mymempool.h"


struct __myhashtable_t_;
typedef struct __myhashtable_t_ * HMYHASHTABLE;

struct __myhash_node_t_;
typedef struct __myhash_node_t_ * HMYHASHTABLE_ITER;


/*
*
*哈希函数
*
*/
typedef size_t (*MYHASH_FUN)(const void * key);

/*
*
*比较键值是否相等
*1:相等 0:不相等
*
*/
typedef int(*MYHASH_KEYEQUAL_FUN)(const void * key1, const void * key2);


/*
*
*哈希表构造
*
*/
extern HMYHASHTABLE MyHashTableConstruct(HMYMEMPOOL hm, MYHASH_FUN hash_fun, MYHASH_KEYEQUAL_FUN keyequal_fun, size_t hash_size);

/*
*
*哈希表析构
*
*/
extern void MyHashTableDestruct(HMYHASHTABLE hht);

/*
*
*哈希表插入一条记录,允许重复
*
*/
extern HMYHASHTABLE_ITER MyHashTableInsertEqual(HMYHASHTABLE hht, const void * key, const void * data);

/*
*
*插入一条记录,不允许重复
*
*/
extern HMYHASHTABLE_ITER MyHashTableInsertUnique(HMYHASHTABLE hht, const void * key, const void * data);

/*
*
*删除一条记录,根据key,
*成功删除返回0, 否则返回-1
*
*/
extern int MyHashTableDelKey(HMYHASHTABLE hht, const void * key, void ** key_ret, void ** data);

/*
*
*删除一条记录,根据迭代器
*成功删除返回0, 否则返回-1
*
*/
extern int MyHashTableDelIter(HMYHASHTABLE hht, HMYHASHTABLE_ITER iter, void ** key, void ** data);

/*
*
*查找一条记录
*
*/
extern HMYHASHTABLE_ITER MyHashTableSearch(const HMYHASHTABLE hht, const void * key);

/*
*
*获取迭代器的值域
*
*/
extern void * MyHashTableGetIterData(const HMYHASHTABLE_ITER it);

/*
*
*设置迭代器的值域
*
*/
extern void MyHashTableSetIterData(const HMYHASHTABLE_ITER it, const void * data);

/*
*
*获取迭代器的键值
*
*/
extern const void * MyHashTableGetIterKey(HMYHASHTABLE_ITER it);

/*
*
*获取元素个数
*
*/
extern size_t MyHashTableGetElementCount(const HMYHASHTABLE hht);

/*
*
*获取迭代器的键值
*
*/
extern HMYHASHTABLE_ITER MyHashTableBegin(HMYHASHTABLE hht);

/*
*
*获取一下迭代器
*
*/
extern HMYHASHTABLE_ITER MyHashTableGetNext(HMYHASHTABLE hht, HMYHASHTABLE_ITER it);

/*
*
*获取一下迭代器
*
*/
extern void MyHashTableClear(HMYHASHTABLE hht);

/*
*
*打印哈希表
*
*/
extern void MyHashTablePrint(const HMYHASHTABLE hht);


#endif




























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -