第11章第15题定义代码(h) (Powered by biggates)

原创 2006年06月12日 16:01:00

/// Chapter11.h: 第11章数据结构

 

typedef int keyType;                //以int类型作为散列值类型

typedef char dataType;                //以char类型作为数据类型

 

const int HASH_TABLE_LENGTH = 20;

//令表长为20

 

const int MODDER = 17;                //用作求余数的素数

 

const dataType EMPTY_CHAR = '/0';    //空的数据值的标志

const keyType EMPTY_KEY = -1;        //空的散列值的标志

 

 

//散列表的定义

typedef struct hashChain

//"拉链"的定义,实际上就是一个单链表的定义

{

    //keyType key;                    //该节点的散列值(真是没用啊,明明散列值都一样,为什么还要写一遍呢?)

    dataType data;                    //该节点的数据值

    struct hashChain* pNext;        //指向下一个散列"拉链"的指针

}hashChain;

 

typedef struct hashNode

//散列表的主表,实际上就只有一个hashChain类型的指针域

{

    keyType key;                    //该节点的散列值

    hashChain* pChain;                //该散列值对应的链表头地址

}hashNode;

 

/// 以下是函数声明

 

//////////////////////////////////////////////////////////////////////////

//以下是访问自定义数据类型的函数

//////////////////////////////////////////////////////////////////////////

void printKeyType(const keyType key);

void printDataType(const dataType data);

 

void printHashTable( hashNode* head, const int size);

//显示以head为首,长度为size的hashNode表的内容的函数

 

//////////////////////////////////////////////////////////////////////////

//以下是处理自定义数据结构的函数

//////////////////////////////////////////////////////////////////////////

 

void initializeHashChain(hashChain* chain);

//初始化一个hashChain节点的函数

 

void initializeHashNodes(hashNode* head, const int size);

//初始化一个hashNode节点的函数

 

hashNode* createHashTable(hashNode* head, const int size, const int totalNumber);

//建立初始长度为size的散列表,并返回其首地址的函数

//不成功则返回NULL

 

keyType getHash(const dataType data);

//从data算出hash值的函数

 

hashChain* newHashChain();

//分配新的hashChain节点的函数

 

hashNode* chainSearch(hashNode* head, const int size, const dataType data);

//在以head为首,长度为size的hashNode表中查找data,并返回其Node地址的函数

//不成功则返回NULL

 

hashChain* insertIntoChain(hashNode* head, const int size, const dataType data);

//在以head为首,长度为size的hashNode表中插入值为data的节点的函数

//成功则返回其地址,否则返回NULL

 

void freeHashTable(hashNode* head, const int size);

//释放以head为首,长度为size的hashNode表所占用的空间的函数

相关文章推荐

水木:java进程 代码注入 (Powered by zms)

java进程 代码注入 (Powered by zms) http://www.btsmth.com/show_topic.php?en_name=Java&gid=277398 楼主 zms ...

图解wireshark——Powered By haoppywang

原文地址: http://haoppywang.iteye.com/blog/788050 内容: Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并...

adb(android debug bridge)工具的使用方法  -  棒槌网@Android开发论坛 - Powered by phpwind

adb(android debug bridge)工具的使用方法: cr&sI=i  常用命令: i"#36CVT~  1.列出查找到的android phone CPw=? adb devi...

Android 0.9移植到Android 1.0  -  棒槌网@Android开发论坛 - Powered by phpwind

            主页>android移植> 正文            android 0.9移植到android 1.0                          发布时间:200...

linux c/c++ GDB教程详解 ——Powered By lyjtynet的专栏

原文地址: http://blog.csdn.net/lyjtynet/article/details/4057723 内容: 学习使用了GDB一段时间后,发现它真的好强大!好用! ...

Powered by Android

  • 2017年07月28日 16:54
  • 401KB
  • 下载

Sinowal Bootkit 分析-中国红客网络技术联盟 - Powered by Discuz!

(一)模块组成         感染过Sinowal的电脑,Sinaowal在硬盘中的分布如下图: ; Sector                 Offset                 ...
  • wrmsr
  • wrmsr
  • 2014年04月30日 11:27
  • 945

仿ATM机程序(Powered By .net2005)

  • 2008年12月24日 00:06
  • 6.37MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第11章第15题定义代码(h) (Powered by biggates)
举报原因:
原因补充:

(最多只允许输入30个字)