首页 > 代码库 > 哈希表链地址法表示与实现
哈希表链地址法表示与实现
以下是经过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();}
最后得出测试结果
哈希表链地址法表示与实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。