当前位置: 首页> 文旅> 艺术 > 沈阳关键词自动排名_苏州疫情防控最新政策_中文网站排名_网站优化工具

沈阳关键词自动排名_苏州疫情防控最新政策_中文网站排名_网站优化工具

时间:2025/7/11 0:10:42来源:https://blog.csdn.net/2305_78057683/article/details/143869600 浏览次数:0次
沈阳关键词自动排名_苏州疫情防控最新政策_中文网站排名_网站优化工具
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define M 20
#define NULLDEL -1
#define DELDEY -2typedef struct
{int key;int count;
}HashTable;//创建和插入
void Insert(HashTable ha[], int m, int p, int key)
{int i, HO, HI;HO = key % p;if (ha[HO].key == NULLDEL || ha[HO].key == DELDEY){ha[HO].key = key;ha[HO].count = 1;}else{i = 1;do{HI = (HO + i * i) % m;i++;} while (ha[HI].key != NULLDEL && ha[HI].key != DELDEY);ha[HI].key = key;ha[HI].count = i;}
}
void Create(HashTable ha[],int m,int n1,int p,int keys[])
{int i;for (i = 0; i < m; i++){ha[i].key = NULLDEL;ha[i].count = 0;}for (i = 0; i < n1; i++){Insert(ha, m, p, keys[i]);}printf("二次探测法哈希表如下:\n");for (i = 0; i < m; i++){printf("%d  查找次数 %d 次\n", ha[i].key,ha[i].count);}
}
//查找
int Search(HashTable ha[], int m, int p, int key)
{int HO, HI;HO = key % p;if (ha[HO].key == NULLDEL){ha[HO].count = 1;return -1;}else if (ha[HO].key == key){ha[HO].count = 1;return HO;}else{ha[HO].count = 1;for (int i = 0; i < m; i++){HI = (HO + i * i) % m;//HO还是那个HO,这里变的是HI和i的值if (ha[HI].key == NULLDEL){ha->count = ha[HO].count + i;//哈希冲突的次数return -1;}else if (ha[HI].key == key){ha->count = ha[HO].count + i;return HI;}}}
}
//删除哈希值
bool deleteNode(HashTable ha[], int m, int p, int key)
{int HO,i = 1;HO = key % p;while (ha[HO].key != NULLDEL && ha[HO].key != key){HO = (HO + i * i);i++;}if (ha[HO].key == key){ha[HO].key = DELDEY;return true;}else{return false;}
}
int main()
{HashTable ha[M];int keys[] = { 19,14,23,1,68,20,84,27,55,11,10,79 };int n1 = sizeof(keys) / sizeof(keys[0]);int p = 13;Create(ha, M, n1, p, keys);int key = 79;int result = Search(ha, M, p, key);if (result!=-1){printf("找到 %d 位置在 %d 哈希冲突 %d 次\n", key, result, ha->count);}else {printf("找不到 %d 哈希冲突 %d 次\n", key, ha->count);}key = 23;deleteNode(ha, M, p, key);printf("删除 %d 元素后遍历如下:\n", key);for (int i = 0; i < M; i++){if (ha[i].key != NULLDEL && ha[i].key != DELDEY){printf(" %d ", ha[i].key);}else {printf(" * ");}}return 0;
}

关键字:沈阳关键词自动排名_苏州疫情防控最新政策_中文网站排名_网站优化工具

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: