C++哈希表头文件

C++哈希表头文件,第1张

概述#ifndef _HASHTABLE_H_#define _HASHTABLE_H_#include <iostream>#include <cstdlib>using namespace std;typedefenum { Empty, Active, Deleted}kindofitem;typedef struct{ int k
#ifndef _HASHtable_H_#define _HASHtable_H_#include <iostream>#include <cstdlib>using namespace std;typedefenum {    Empty,Active,Deleted}kindofitem;typedef struct{    int key;}datatype;typedef struct{    datatype data;    kindofitem info;}hashitem;typedef struct{    hashitem* arr;    int table_size;    int current_size;}hashtable;int initiate(hashtable* hash,int size);//初始化哈希表int find(hashtable* hash,datatype x);//查找x元素对应的关键字int insert(hashtable* hash,datatype x);//像哈希表中插入数组元素x,及设置它对应的关键字int deleted(hashtable* hash,datatype x);//从哈希表中删除x数据元素voID destroy(hashtable* hash);//撤销函数/*int main(){system("pause");return 0;}*/int initiate(hashtable* hash,int size){    hash->arr = (hashitem*)malloc(sizeof(hashitem)*size);//初始化,该数组    hash->table_size = size;    if (hash->arr == NulL)    {        cout << "初始化失败" << endl;        return 0;    }    else    {        hash->current_size = 0;        return 1;    }}int find(hashtable* hash,datatype x)//查找x元素对应的关键字{    int i = x.key%hash->table_size;    int j = i;    while (hash->arr[j].info == Active&&hash->arr[j].data.key != x.key)    {        j = (j + 1)&hash->table_size;//用哈希冲突方法继续查找        if (j == i)        {            cout << "遍历此哈希表,没有找到" << endl;            return -hash->table_size;        }    }    if (hash->arr[j].info == Active)    {        return j;    }    else{        return -j;    }}int insert(hashtable* hash,datatype x){    int i = find(hash,x);    if (i > 0)    {        cout << "该数据元素已经存在了!" << endl;        return 0;    }    else if (i != -hash->table_size)    {        hash->arr[-i].data = x;        hash->arr[-i].info = Active;        hash->current_size++;        return 1;    }    else{        return 0;    }}int deleted(hashtable* hash,x);    if (i > 0)    {        hash->arr[i].info = Deleted;        hash->current_size--;        return 1;    }    else{        cout << "没有这个元素,无法删除!" << endl;        return 0;    }}voID destroy(hashtable* hash){    delete[]hash->arr;}#endif
总结

以上是内存溢出为你收集整理的C++哈希表头文件全部内容,希望文章能够帮你解决C++哈希表头文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1210885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存