嵌入式学习-数据结构

数据结构-哈希表

一级目录

#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;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值