哈希游戏系统开发程序搭建细节分享

简介: 下面分享关于哈希系统开发的一些代码,包括系统组成、关联以及系统开发过程,有需求或者问题欢迎留言、咨询。#include<stdio.h>#include<iostream>

下面分享关于哈希系统开发的一些代码,包括系统组成、关联以及系统开发过程,有需求或者问题欢迎留言、咨询。

include<stdio.h>

include

include<conio.h>

using namespace std;

define HASH_LEN 50 //哈希表的长度

define M 47 //随机数

intNAME_NO=34; //城市名的个数

typedef struct

{

char*py; //名字的拼音

intk; //拼音所对应的整数

}NAME;

NAME NameList[HASH_LEN]; //全局变量NAME

typedef struct //哈希表

{

char*py; //名字的拼音

intk; //拼音所对应的整数

intsi; //查找长度

}HASH;

HASH HashList[HASH_LEN]; //全局变量HASH

void InitNameList() //姓名(结构体数组)初始化

{

char*f;

intr,s0,i;

NameList[0].py="harbin";

NameList[1].py="shijiazhuang";

NameList[2].py="lanzhou";

NameList[3].py="kunming";

NameList[4].py="chengdu";

NameList[5].py="changchun";

NameList[6].py="shenyang";

NameList[7].py="xining";

NameList[8].py="xian";

NameList[9].py="zhengzhou";

NameList[10].py="jinan";

NameList[11].py="taiyuan";

NameList[12].py="hefei";

NameList[13].py="wuhan";

NameList[14].py="changsha";

NameList[15].py="nanjing";

NameList[16].py="guiyang";

NameList[17].py="nanning";

NameList[18].py="hangzhou";

NameList[19].py="nanchang";

NameList[20].py="guangzhou";

NameList[21].py="fuzhou";

NameList[22].py="taipei";

NameList[23].py="haikou";

NameList[24].py="huhhot";

NameList[25].py="yinchuan";

NameList[26].py="urumqi";

NameList[27].py="lahsa";

NameList[28].py="macau";

NameList[29].py="beijing";

NameList[30].py="shanghai";

NameList[31].py="hongkong";

NameList[32].py="tianjin";

NameList[33].py="chongqing";

for (i=0;i<NAME_NO;i++)

{

s0=0;

f=NameList[i].py;

for (r=0;*(f+r)!='\0';r++)

/ 方法:将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字/

s0=*(f+r)+s0;

NameList[i].k=s0;

}

}

void CreateHashList() //建立哈希表

{

inti;

for (i=0; i<HASH_LEN;i++)

{

HashList[i].py="";

HashList[i].k=0;

HashList[i].si=0;

}

for (i=0;i<HASH_LEN;i++)

{

intsum=0;

intadr=(NameList[i].k)%M; //哈希函数

intd=adr;

if(HashList[adr].si==0) //如果不冲突

{

HashList[adr].k=NameList[i].k;

HashList[adr].py=NameList[i].py;

HashList[adr].si=1;

}

else //冲突

{

do

{

d=(d+NameList[i].k%10+1)%M; //伪随机探测再散列法处理冲突

sum=sum+1; //查找次数加1

}while (HashList[d].k!=0);

HashList[d].k=NameList[i].k;

HashList[d].py=NameList[i].py;

HashList[d].si=sum+1;

}

}

}

intFindList() //查找

{

charname[20]={0};

ints0=0,r,sum=1,adr,d;

printf("\n请输入城市名称:");

scanf("%s",name);

for (r=0;r<20;r++) //求出姓名的拼音所对应的整数(关键字)

s0+=name[r];

adr=s0%M; //使用哈希函数

d=adr;

if(HashList[adr].k==s0) //分3种情况进行判断

{

printf("\n名称:%s 关键字:%d 查找长度为: 1",HashList[d].py,s0);

cout<<endl;

return 0;

}

else if (HashList[adr].k==0)

{

printf("无此记录!");

cout<<endl;

return 1;

}

else

{

intg=0;

do

{

d=(d+s0%10+1)%M; //伪随机探测再散列法处理冲突

sum=sum+1;

if (HashList[d].k==0)

{

printf("无此记录! ");

cout<<endl;

g=1;

return 1;

}

if (HashList[d].k==s0)

{

printf("\n名称:%s 关键字:%d 查找长度为:%d",HashList[d].py,s0,sum);

cout<<endl;

g=1;

return 0;

}

}while(g==0);

}

}

void Display() // 显示哈希表

{

inti;

floataverage=0;

for(i=0; i<HASH_LEN; i++)

{

if(HashList[i].k%M==0)

HashList[i].py="";

}

printf("\n\n地址\t关键字\t\t搜索长度\tH(key)\t 名称\n"); //显示的格式

for(i=0; i<HASH_LEN; i++)

{

printf("%d ",i);

printf("\t%d ",HashList[i].k);

printf("\t\t%d ",HashList[i].si);

printf("\t\t%d ",HashList[i].k%M);

printf("\t %s ",HashList[i].py);

//cout<<" "<<HashList[i].py<<endl;

printf("\n");

//cout<<i<<" "<<HashList[i].k<<" "<<HashList[i].si<<" "<<HashList[i].k%M<<" "<<HashList[i].py<<endl;

}

for (i=0;i<HASH_LEN;i++)

average+=HashList[i].si;

average/=NAME_NO;

printf("\n\n平均查找长度:ASL(%d)=%f \n\n",NAME_NO,average);

}

void DeleteList()

{

charname[20]={0};

ints0=0,r,sum=1,adr,d;

printf("\n请输入城市名称:");

scanf("%s",name);

for (r=0;r<20;r++) //求出姓名的拼音所对应的整数(关键字)

s0+=name[r];

adr=s0%M; //使用哈希函数

d=adr;

if(HashList[adr].k==s0) //分3种情况进行判断

{

printf("\n名称:%s 关键字:%d 查找长度为: 1",HashList[d].py,s0);

cout<<endl;

cout<<"删除成功!"<<endl;

s0=0;

HashList[d].py=""; //名字的拼音

HashList[d].k=0; //拼音所对应的整数

HashList[d].si=0;

}

else if (HashList[adr].k==0)

printf("无此记录!无法执行删除操作!");

else

{

intg=0;

do

{

d=(d+s0%10+1)%M; //伪随机探测再散列法处理冲突

sum=sum+1;

if (HashList[d].k==0)

{

printf("无此记录!无法执行删除操作!");

g=1;

}

if (HashList[d].k==s0)

{

printf("\n名称:%s 关键字:%d 查找长度为:%d",HashList[d].py,s0,sum);

cout<<endl;

cout<<"已删除成功!"<<endl;

s0=0;

HashList[d].py=""; //名字的拼音

HashList[d].k=0; //拼音所对应的整数

HashList[d].si=0;

//Display();

g=1;

}

}while(g==0);

}

}

void EnterList()

{

/*char name[20]={0};

int s0=0,r,sum=1,adr,d,h;

printf("\n请输入姓名的拼音:");

scanf("%s",name);

for (r=0;r<20;r++) //求出姓名的拼音所对应的整数(关键字)

s0+=name[r];*/

charst[20];

char*xin;

xin=st;

ints0=0,r,sum=1,adr,d,h;

printf("\n请输入城市名称的拼音:");

cin>>xin;

//cout<<xin<<endl;

for (r=0;*(xin+r)!='\0';r++)

{

/ 方法:将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字/

s0=(int)(*(xin+r))+s0;

}

//cout<<s0<<endl;

adr=s0%M; //使用哈希函数

d=adr;

if(HashList[adr].k==s0) //分3种情况进行判断

{

printf("\n名称:%s 关键字:%d 查找长度为: 1",HashList[d].py,s0);

cout<<endl;

cout<<"已存在于表中,无需插入!"<<endl;

}

else if (HashList[d].k==0)

{

printf("插入成功!");

HashList[d].py=xin;

HashList[d].k=s0;

HashList[d].si=1;

h=1;

cout<<endl;

}

else

{

intg=0,h=0;

do

{

d=(d+s0%10+1)%M; //伪随机探测再散列法处理冲突

sum=sum+1;

if (HashList[d].k==0)

{

printf("插入成功!");

HashList[d].py=xin;

HashList[d].k=s0;

HashList[d].si=sum;

h=1;

cout<<endl;

g=1;

}

if (HashList[d].k==s0)

{

printf("\n名称:%s 关键字:%d 查找长度为:%d",HashList[d].py,s0,sum);

cout<<endl;

cout<<"已存在于表中,无需插入!"<<endl;

g=1;

}

}while(g==0);

}

if(h==0)

return;

else

{

NAME_NO++;

NameList[NAME_NO-1].py=xin;

intsum=0;

intadr=(NameList[NAME_NO-1].k)%M; //哈希函数

intd=adr;

if(HashList[adr].si==0) //如果不冲突

{

HashList[adr].k=NameList[NAME_NO-1].k;

HashList[adr].py=NameList[NAME_NO-1].py;

HashList[adr].si=1;

}

else //冲突

{

do

{

d=(d+NameList[NAME_NO-1].k%10+1)%M; //伪随机探测再散列法处理冲突

sum=sum+1; //查找次数加1

}while (HashList[d].k!=0);

HashList[d].k=NameList[NAME_NO-1].k;

HashList[d].py=NameList[NAME_NO-1].py;

HashList[d].si=sum+1;

}

}

}

void main()

{

charch1;

printf("\n 哈希表\n");

printf(" -------------------------------------------\n");

printf(" | D. 显示哈希表 |\n");

printf(" | F. 查找 |\n");

printf(" | S. 删除 |\n");

printf(" | E. 插入 |\n");

printf(" | Q. 退出 |\n");

printf(" -------------------------------------------\n");

InitNameList();

CreateHashList ();

while(1)

{

printf("\n Option-:");

fflush(stdin);

ch1=getchar();

if (ch1=='D'||ch1=='d')

Display();

else if (ch1=='F'||ch1=='f')

FindList();

else if (ch1=='S'||ch1=='s')

DeleteList();

else if (ch1=='E'||ch1=='e')

EnterList();

else if (ch1=='Q'||ch1=='q')

return;

else

{

printf("\n请输入正确的选择!");

}

}

}

相关文章
|
2月前
|
安全
哈希竞猜游戏系统开发玩法详情/功能步骤/需求设计/流程方案/源码程序
Developing a hash guessing game system can provide a fun gaming experience. The following are possible gameplay and rules for your reference:
什么是元宇宙游戏系统开发案例介绍/方案步骤/需求功能/源码指南
Metaverse game system development refers to the creation of a complex system that combines virtual reality, blockchain technology, and game design, allowing players to immerse themselves in a virtual world and interact with other players, trade virtual assets, and more. This type of gaming system ty
|
2月前
|
安全 区块链
区块链游戏系统开发步骤需求丨功能逻辑丨规则玩法丨指南教程丨源码详细
Developing blockchain game systems has been a highly anticipated field in recent years. By combining blockchain technology and game mechanics, players can enjoy a brand new gaming experience and higher game credibility.
|
2月前
|
安全
HASH哈希竞猜游戏系统开发指南详细/规则设计/成熟案例/源码程序
HASH哈希竞猜游戏是一种基于密码学的游戏,参与者需要根据给定的哈希值来猜测对应的原始数值。
|
10月前
|
存储 前端开发 安全
什么是盲盒游戏系统开发规则丨指南教程丨功能逻辑丨需求项目丨源码方案
确定盲盒游戏的目标受众、玩法要素和游戏规则。 - 确定游戏系统的核心功能,如盲盒的获取、开启、物品收集、交易等。 - 确定技术平台和开发语言,如移动端应用的开发是选择原生开发(如iOS的Swift或Android的Java/Kotlin)还是跨平台开发(如React Native或Flutter)。
|
11月前
|
存储 安全 区块链
区块链游戏系统开发(开发详细)/案例开发/设计功能/逻辑方案/源码平台
  区块链游戏系统开发是一个复杂而精密的过程。首先,需要进行需求分析和规划,确定游戏系统的功能和特性。然后,进行技术选型和架构设计,选择适合的区块链平台和开发工具。接下来,进行系统的搭建和编码,实现游戏逻辑和用户交互功能。最后,进行测试和优化,确保系统的稳定性和性能。
|
11月前
|
存储 移动开发 算法
dapp哈希竞猜链上游戏系统开发案例规则/方案介绍/项目逻辑/源码平台
  Hash,一般翻译做散列,或音译为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。
|
11月前
|
存储 算法 安全
哈希竞猜游戏系统开发(dapp链上游戏开发)/玩法规则/方案详细/策略说明/源码部署
哈希算法是一种将任意长度的数据转换成固定长度的数据的过程。该过程是不可逆的,这意味着很难从哈希值还原原始数据
|
12月前
|
存储 JSON 区块链
NFT游戏系统开发逻辑规则源码实例分析
NFT游戏系统开发逻辑规则源码实例分析
|
12月前
|
存储 算法 区块链
Hash哈希竞猜游戏系统开发/区块链dapp游戏开发/规则玩法/项目案例/方案逻辑/成熟技术/源码程序
  哈希算法(Hash Algorithm)是一种将任意长度的消息映射为固定长度的消息摘要(Message Digest)的算法。哈希算法可以将任意长度的输入数据转换为固定长度的输出,