关闭

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

标签: 数据结构structnulltable
454人阅读 评论(0) 收藏 举报
分类:

/// 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表所占用的空间的函数

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34479次
    • 积分:751
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条