首页 > 代码库 > 哈希表链地址法表示与实现

哈希表链地址法表示与实现

以下是经过DEV-C++调试过的代码 还有框图:

头文件hashlist.h

#ifndef _H_HASHLIST_#define _H_HASHLIST_#define HASH_NUM_MAX 100#define u32 unsigned int//typedef struct _Node * pNode;//typedef struct _Hash_Header * pHash_Header;typedef struct _Node{    u32 id;    u32 data;    struct _Node *next;        }Node,*pNode;typedef struct _Hash_Header{    struct _Node *next;    }Hash_Header,*pHash_Header;typedef struct _Hash_List{    struct  _Hash_Header* list[100];           }Hash_List,*pHash_List;pHash_List init_hash_list(void);//pHash_Header init_hash_header(void);//pNode init_node_header(void);//void init_all_node_header(void);pNode insert_node_to_hash(pHash_List plist,u32 id,u32 data);int delete_node_to_hash(pHash_List plist,u32 id);void print_hash(pHash_List plist);int free_all_hash(pHash_List plist); #endif

 

存放数据结构的文件hashlist.h

/********************************************编写时间:2014.12.10作者:XIAO_PING_PING内容:哈希表(拉链式) 功能:学习写数据结构  ********************************************/#include <string.h>#include <stdio.h>#include <stdlib.h>#include "hashlist.h"//pHash_Header hash_list[HASH_NUM_MAX];/*初始化一个哈希表*/pHash_List init_hash_list(void){    u32 i;    pHash_List plist;    //pHash_Header phead;        plist = (Hash_List *)malloc(sizeof(Hash_List));         for( i = 0;i < 100;i++ )    {        plist->list[i] = (Hash_Header *)malloc(sizeof(Hash_Header));         plist->list[i]->next = NULL;    }             return plist;} #if 0/*初始化一个哈希链表头*/pHash_Header init_hash_header(void){    Hash_Header *phead;        phead = (Hash_Header *)malloc(sizeof(Hash_Header));    phead->next = NULL;        return phead;}/*初始化一个链表节点头*/ pNode init_node_header(void){    Node *phead;        phead = (Node *)malloc(sizeof(Node));    phead->next = NULL;        return phead;      } /*初始化所有节点链表头*/void init_all_node_header(void){    u32 i;    Hash_Header *plist;        for( i = 0;i < HASH_NUM_MAX;i++)    {       hash_list[i] = init_hash_header();     }}#endif/*根据id插入一个节点数据*/pNode insert_node_to_hash(pHash_List plist,u32 id,u32 data){    Node *ptail,*pre,*p;    u32 temp = id % 100;        ptail = (Node *)malloc(sizeof(Node));    ptail->next = NULL;    ptail->data = http://www.mamicode.com/data;>
/********************************************/#include <string.h>#include <stdio.h>#include <stdlib.h>#include <conio.h>#include "hashlist.h"int main(){    pNode p;    pHash_List plist;    plist = init_hash_list();    insert_node_to_hash(plist,301,138);    insert_node_to_hash(plist,32,1334);    insert_node_to_hash(plist,201,137);        print_hash(plist);        delete_node_to_hash(plist,32);    //delete_node_to_hash(plist,201);    //delete_node_to_hash(plist,301);        print_hash(plist);        free_all_hash(plist);        getch();}

 

最后得出测试结果

 


 

哈希表链地址法表示与实现