糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > c语言扩散 可扩散列--可扩散列头文件C语言

c语言扩散 可扩散列--可扩散列头文件C语言

时间:2024-07-22 14:11:43

相关推荐

c语言扩散 可扩散列--可扩散列头文件C语言

我真够郁闷,这么久没有更新博客.罪过,罪过...

写这个可扩散列,我写出来的这个完全是个模型,限制较多,局限性也很强,大概32:1.呵呵.不过,尽管如此,拿来练手或者之前没有写过这个东西的朋友看到的话,还是很有帮助的.

大概介绍下吧,不详谈了.本来想吹一顿的,无奈写到现在,感觉很垃圾.于是不好意思大吹特吹了.

数据类型,无符号8位整数.对255以上的数据无效,想弄成负数要做的改动并不多.无奈不想再多耽搁了.

支持,初始化,插入,查找,删除,遍历,清空.还算齐全的功能.

介绍到这里吧,主要是啊,完全就是在书上看到的两页而已,自己写出来,很了不起了啊.没人指导我,网上也没这个东西,哎,我还真是个天才.

虽然,工作很难落实,很难照着我的想法前进,无奈,该做的还是要做下去.办法也还是要继续想,加油吧.不然怎么办呢.

现在心情反而平静了,代码没做太多的优化.贴出来.

/*extendible_hashing.h-- 可扩散列头文件*/

#define NO 0

#define YES 1

#define M 4

#define LENTH 8

/*数据类型定义*/

typedef unsigned char Item ;/*数据*/

typedef struct unit

{

Item * array ;/*数据数组*/

char sub ;/*使用中表元的数量*/

} Unit ;/*数据单元*/

typedef struct subdirectories

{

Unit * point ;/*指向数据单元的指针*/

char point_to_itself ;/*标记是否指向的其本身的数据空间*/

char byte_index ;/*位索引值*/

} Subdirectories ;/*子目录*/

typedef struct table

{

Subdirectories * directory ;/*目录(子目录数组)*/

char directory_size ;/*目录大小*/

char index_digit ;/*索引位数*/

char item_digit ;/*数据位数*/

char array_size ;/*数据数组大小*/

} * Table ;

/*说明:由于手里没有这种数据类型的模型, 算是自己根据要求创造*/

/*将数据类型限制为char类型.有符号8位二进制,这样利于操作*/

/*接口函数声明*/

/*操作:根据二个输入数据产生一个数值并返回*/

/*操作前:pitem 指向指定数据, constant 是被移位的数值*/

/*操作后:产生一个数值并返回*/

int Hash (const Item * const pitem, const char constant) ;

/*操作:创建并初始化一个可扩散列表*/

/*操作前:ptable 指向一个可扩散列表*/

/*操作后:如果内存分配成功, 创建该可扩散列表, 目录大小初始化为4, 索引位数初始化为2, 数据数组大小初始化为4, 返回1; 否则返回0*/

int InitializeTable (Table * const ptable) ;

/*操作:向可扩散列表中添加一个元素*/

/*操作前:ptable 指向一个已初始化的可扩散列表, pitem 指向指定的数据*/

/*操作后:如果未重复添加, 如果内存分配成功, 将指定的数据添加到可扩散列表中, 返回1; 否则返回0*/

int Insert (const Table * const ptable, const Item * const pitem) ;

/*操作:查找并返回可扩散列表中的一个指定数据*/

/*操作前:ptable 指向一个已初始化的可扩散列表, pitem 指向指定的数据*/

/*操作后:如果找到, 返回1; 否则返回0*/

int Find (const Table * const ptable, const Item * const pitem) ;

/*操作:从可扩散列表目录的低索引向高索引依次将一个函数作用于point指针指向其自身数据空间的的子目录*/

/*操作前:ptable 指向一个已初始化的可扩散列表, pfun 指向一个没有返回值, 接受一个Subdirectories类型参数的函数*/

/*操作后:从可扩散列表目录的低索引向高索引依次将一个函数作用于point指针指向其自身数据空间的的子目录*/

void Traversal (const Table * const ptable, void (* pfun) (const Subdirectories subdirectories)) ;

/*操作:从可扩散列表中删除一个指定数据*/

/*操作前:ptable 指向一个已初始化的可扩散列表, pitem 是准备删除的数据*/

/*操作后:如果找到该数据, 将该数据从可扩散列表中删除, 返回1; 否则返回0*/

int Delete (const Table * const ptable, const Item * const pitem) ;

/*操作:清空可扩散列表占用的内存空间*/

/*操作前:pteble 指向一个已初始化的可扩散列表*/

/*操作后:该可扩散列表占用的内存空间被释放*/

void Release (const Table * const ptable) ;

如果觉得《c语言扩散 可扩散列--可扩散列头文件C语言》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。