哈希表设计

编程入门 行业动态 更新时间:2024-10-10 13:22:08

<a href=https://www.elefans.com/category/jswz/34/1758700.html style=哈希表设计"/>

哈希表设计

内容
(1)、对于给定20个人的姓名,用除留余数法构造哈希函数,用线性探测再散列
法处理冲突,构造哈希表;
(2)、对于给定的一个姓名,在哈希表上进行查找,如果其存在则将其删除,否
则将其插入到该哈希表上。
(9)、不妨设字母(不分大小写)a~z对应于数值1~26,对于给定的20个姓名作为关键
字,将构成每个姓名的首字母对应的数值相加,然后按照除留余数法构造哈希函数,
并用线性探测再散列法处理冲突,完成哈希表的构造。

程序如下

#include <stdio.h>
#define MaxSize 100      //定义最大哈希表长度
#define NULLKEY -1       //定义空关键字值
#define DELKEY -2        //定义被删关键字值
typedef int KeyType;     //关键字类型
typedef char *InfoType;  //其他数据类型
typedef struct{
    KeyType key;        //关键字域
    InfoType data;      //其他数据域
    int count;          //探查次数域
}HashTable[MaxSize];    //哈希表类型 void InsertHT(HashTable ha,int &n,KeyType k,int p);
void CreateHT(HashTable ha,KeyType x[],int n,int m,int p);
int SearchHT(HashTable ha,int p,KeyType k);
int DeleteHT(HashTable ha,int p,int k,int &n);
void DispHT(HashTable ha,int n,int m);
int *fun(int *k);
int change(char y[10]); void main()
{
    int x[20]={0};
 fun(x);
    int n=20,m=30,p=29,i,k;
 char k1[10];
    HashTable ha;
    CreateHT(ha,x,n,m,p);
    printf("\n");
    DispHT(ha,n,m);
 printf("请输入查找的姓名:");
  scanf("%s",&k1);
    k=change(k1);
    i=SearchHT(ha,p,k);
    if (i!=-1)
 {  
  printf(" 找到%d\n",k);
        printf(" 删除关键字\n");
        DeleteHT(ha,p,k,n);
 }
    else

更多推荐

哈希表设计

本文发布于:2024-02-13 06:23:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757580.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:哈希表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!