数据结构的字典插入,哈希表使用

本文探讨了数据结构中的字典插入操作,重点介绍了哈希表的使用。通过设计哈希函数,实现平均查找长度的优化,将关键字存储在0到12的散列表中,从而提高查找效率。

数据结构的字典插入,哈希表使用
hash基数(散列表,设计哈希函数,平均查找长度(分子为查找关键字的次数,分母为关键字的个数))
散列表类似于数组结构,用于存储关键字,哈希函数可根据要求自己设置

#include<iostream>
using namespace std;
#include<string.h>
#include<stdio.h>
typedef int KeyType;
typedef int DataType;
typedef struct{
 KeyType key;
 DataType value;
}DicElement;
struct HashTable{
 int MaxNum;
 int curNum;
 DicElement *element;
};
 
typedef struct HashTable* hash;

//初始化哈希表,先设置为空表(赋初值) 
hash InitHashTable(int max){
 hash p;
 p=new struct HashTable;
 p->MaxNum=max;
 p->curNum=0;
 p->element=new DicElement[max];
 for(int i=0;i<max;i++){
  p->element[i].key=-1;
 }
 return p;
}

int HashFun(KeyType key){
 return key%13;
}

//将数据插入哈希表 
void insertHash(KeyType key,hash h){
 int i=1;
 int add=HashFun(key);
 L:if(h->element[add].key==-1){
  h->element[add].key=key;
  return;
 }
 else{
     add=(add+1)%h->MaxNum;
    }
    goto L;  //返回到L处执行
} 

//打印结果 
void print(hash h){
 for(int i=0;i<h->MaxNum;i++){ 
     if(h->element[i].key==-1)   i++;
      cout<<"i:"<<i<<"   ";
   cout<<h->element[i].key<<endl;
 }
}

int main(){
  KeyType data[]={19,14,23,1,68,20,84,27,55,11,10,79};
 hash temp=InitHashTable(13);
 for(int i=0;i<sizeof(data)/sizeof(KeyType);i++){    //求KeyType类型数组的长度 
   insertHash(data[i],temp);
    }
 print(temp);
 return 0;
}

散列表:从0开始到12的一个表用于存储数据
这里的输出结果为:(只输出有存储数据的散列表位置)

i:1   14
i:2    1
i:3    68
i:4    27  
i:5    55
i:6    19
i:7    20
i:8    84
i:9     79
i:10    23
i:11    11
i=12    10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值