数据结构-哈希表
一级目录
#include<stdio.h>
#include<stdlib.h>
#include"hash.h"
//初始化哈希表
void init_hash(Node *hash[])
{
for(int i=0;i<P;i++)
{
hash[i]=NULL;
}
return ;
}
//存入元素
int insert_hash(Node *hash[],datatype x)
{
Node *p=(Node*)malloc(sizeof(Node));
if(p==NULL){printf("空间申请失败\n");return
int index=x%P;
p->data=x;
p->next=NULL;
p->next=hash[index];
hash[index]=p;
printf("元素存入成功\n");
return 0;
}
//查看哈希表
void show_hash(Node *hash[])
{
Node *q;
for(int i=0;i<P;i++)
{
printf("%d:",i);
q=hash[i];
while(q!=NULL)
{
printf("%d-->",q->data);
q=q->next;
}
printf("NULL\n");
}
return;
}
//哈希查找
void search_hash(Node *hash[], int key)
{
int index=key%P;
Node *p=hash[index];
while(p!=NULL && p->data!=key )
{
p=p->next;
}
if(p == NULL){printf("你要查找的元素%d不在表中\n",key);return;}
else {printf("你要查找的元素%d在表中\n",key);return;}
}
#ifndef __HASH_H__
#define __HASH_H__
#define N 10
#define P 13
typedef int datatype;
typedef struct Node
{
datatype data;
struct Node *next;
}Node;
//
//初始化哈希表
void init_hash(Node *hash[]);
//存入元素
int insert_hash(Node *hash[],datatype x);
//查看哈希表
void show_hash(Node *hash[]);
//哈希查找
void search_hash(Node *hash[], int key);
#endif
#include<stdio.h>
#include<stdlib.h>
#include"hash.h"
int main(int argc, const char *argv[])
{
int arr[N]={25,51,8,22,26,67,11,16,54,41};
Node *hash[P];
init_hash(hash);
for(int i=0;i<N;i++)
{insert_hash(hash,arr[i]);}
show_hash(hash);
search_hash(hash, 16);
search_hash(hash, 42);
return 0;
}