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

简介: 下面分享关于哈希系统开发的一些代码,包括系统组成、关联以及系统开发过程,有需求或者问题欢迎留言、咨询。#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请输入正确的选择!");

}

}

}

相关文章
|
7月前
|
安全
哈希竞猜游戏系统开发玩法详情/功能步骤/需求设计/流程方案/源码程序
Developing a hash guessing game system can provide a fun gaming experience. The following are possible gameplay and rules for your reference:
|
7月前
|
安全
HASH哈希竞猜游戏系统开发指南详细/规则设计/成熟案例/源码程序
HASH哈希竞猜游戏是一种基于密码学的游戏,参与者需要根据给定的哈希值来猜测对应的原始数值。
|
存储 移动开发 算法
dapp哈希竞猜链上游戏系统开发案例规则/方案介绍/项目逻辑/源码平台
  Hash,一般翻译做散列,或音译为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。
|
安全 区块链 存储
区块链dapp哈希竞猜游戏系统开发(开发案例)丨DAPP哈希竞猜智能合约游戏系统开发规则玩法/方案详细/稳定版/源码案例
哈希函数是一种将任意长度的数据转换成固定长度的数据的过程。该过程是不可逆的,这意味着很难从哈希值还原原始数据
|
存储 算法 区块链
Hash哈希竞猜游戏系统开发/区块链dapp游戏开发/规则玩法/项目案例/方案逻辑/成熟技术/源码程序
  哈希算法(Hash Algorithm)是一种将任意长度的消息映射为固定长度的消息摘要(Message Digest)的算法。哈希算法可以将任意长度的输入数据转换为固定长度的输出,
|
算法 安全 区块链
DAPP哈希竞猜游戏开发稳定版丨DAPP哈希竞猜游戏系统开发(开发案例)/项目需求/功能逻辑/技术分析
  作为一种可能的Web3.0底层技术,区块链以去中心化、不可篡改、可溯源等特点,构建起数字经济时代的全新信任体系。“哈希竞猜”就是利用这种情况下的随机性,对随机产生的数据进行组合计算,从而找出最有可能被猜中的数字。“
|
安全 算法 分布式数据库
DAPP哈希竞猜游戏系统开发详情案例/规则玩法/逻辑方案/稳定版
  区块链(Blockchain)是一种分布式数据库技术,它以去中心化和共识机制为基础,用于记录和验证数据的交易和交互。它被设计为一种安全、透明和可靠的方式来管理数据和信息。
|
Shell
哈希竞猜游戏开发源码部署方案(成熟技术)
哈希竞猜游戏开发源码部署方案(成熟技术)
112 0
|
区块链 数据安全/隐私保护
 哈希竞猜游戏源码版丨哈希竞猜游戏系统开发(逻辑及详情)丨哈希竞猜游戏开发稳定版
哈希函数的运算结果是哈希值竞猜,如果两个哈希值相同的话,那这两个输入值的微盘结果极大可能会是多国语言相同的,也有一部分可能是大富不同的,这一部分的情况就叫做幸运哈希竞猜碰撞。反之如果两个哈希值是不相同的,那么这两个散列值的原始输入一定是不相同的。
|
算法 安全 区块链
哈希竞猜游戏开发稳定版/哈希竞猜游戏系统开发案例详细/哈希竞猜游戏系统源码逻辑及分析
在区块链中,每个新区块都包含上一个区块经过科学方法算出来的数据指纹——哈希值。这个值让一个个区块之间形成了有着严格顺序关系的链条结构,一旦某个区块中的任何数据被篡改,该区块在下一个区块头部的数据指纹——哈希值就会变动,之后就无法衔接上来,也就不会被任何人认可。