目录
对于以上图形结构,使用邻接矩阵方法完成对图的存储,并输出该图
第一题:
使用哈希存储将数据存入哈希表中,并进行查找
函数代码:
#include<stdio.h>
#include<stdlib.h>
#define N 10
#define P 13
typedef int datatype;
typedef struct Node
{
datatype data; //数据域
struct Node *next; //指针域
}Node;
//初始化哈希表
void init_hash(Node *hash[])
{
for(int i=0;i<P;i++)
{
hash[i] = NULL;
}
printf("初始化成功\n");
}
//将元素存入哈希表
int insrt_hash(Node *hash[],int x)
{
int index = x%P; //定位要存储的链表
Node *q = (Node *)malloc(sizeof(Node));
if(q == NULL)
{
printf("申请失败\n");
return -1;
}
q->data = x;
q->next = NULL;
q->next = hash[index];
hash[index] = q;
return 0;
}
//定义查看哈希表函数
void show_hash(Node *hash[])
{
for(int i=0;i<P;i++)
{
printf("%d:",i);
Node *q = hash[i];
while(q != NULL)
{
printf("%d--->",q->data);
q = q->next;
}
printf("NULL\n");
}
}
//定义哈希查找函数
void search_hash(Node *hash[],int key)
{
int index = key%P;
Node *q = hash[index];
while(q != NULL && q->data!=key)
{
q = q->next;
}
if(q == NULL)
{
printf("查找失败\n");
}else{
printf("查找成功\n");
}
}
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++)
{
insrt_hash(hash,arr[i]);
}
//调用查看函数
show_hash(hash);
//调用查找函数
search_hash(hash,16);
return 0;
}