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

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

}

}

}

相关文章
|
运维 分布式计算 安全
云计算时代的DCI技术
实现数据中心间互通的纽带——DCI网络
云计算时代的DCI技术
|
8月前
|
运维 监控 调度
普通人如何用PCDN来赚钱
私有内容分发网络(PCDN)利用分散的终端设备和带宽资源,构建去中心化的内容分发系统。普通人可通过搭建PCDN,利用闲置设备实现低成本、高灵活性的赚钱机会。主要步骤包括硬件准备、选择稳定软件平台、设计网络架构、内容管理和运维监控。盈利模式涵盖提供PCDN服务、广告合作、流量变现及增值服务。通过优化网络配置和设备选择,可最大化收益。尽管存在法律风险和收益波动,但合理搭建和维护能带来可观回报。
13323 0
|
C++ Python
量化交易系统开发详细步骤/需求功能/策略逻辑/源码指南
Developing a quantitative trading system involves multiple steps, and the following is a possible development process
|
11月前
|
存储 人工智能 数据可视化
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
在数字化时代,企业面临海量客户对话数据处理的挑战。阿里云推出的“AI大模型助力客户对话分析”解决方案,通过先进的AI技术和智能化分析,帮助企业精准识别客户意图、发现服务质量问题,并生成详尽的分析报告和可视化数据。该方案采用按需付费模式,有效降低企业运营成本,提升客服质量和销售转化率。
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
|
安全
HASH哈希竞猜游戏系统开发指南详细/规则设计/成熟案例/源码程序
HASH哈希竞猜游戏是一种基于密码学的游戏,参与者需要根据给定的哈希值来猜测对应的原始数值。
单双哈希竞猜游戏合约开发源码详情
constructor() public { playerAddress = msg.sender; randomNumber = uint256(keccak256(abi.encodePacked(block.difficulty, block.coinbase)));
|
前端开发 Python
幸运哈希hash单双尾数大小竞猜游戏开发源码部署
def is_even_number(number): """判断一个整数是否为偶数""" return number % 2 == 0
|
网络安全 开发工具 git
|
弹性计算 运维 负载均衡
【运维】使用HAproxy配置后端数据库集群 高可用及负载均衡
后端mariadb数据库galera_cluster集群参考之前文档,https://developer.aliyun.com/article/849929
2133 5
【运维】使用HAproxy配置后端数据库集群 高可用及负载均衡