- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计-扑克牌的排序汇
课 程 设 计 报 告
课程设计名称:数据结构课程设计
课程设计题目:扑克牌的排序
目 录
1 课程设计介绍 1
1.1 课程设计内容 1
1.2 课程设计要求 1
2 课程设计原理 2
2.1 课设题目粗略分析 2
2.2 原理图介绍 2
2.2.1 功能模块图 2
2.2.2 流程图分析 3
3 数据结构分析 6
3.1 存储结构 6
3.2 算法描述 6
4 调试与分析 12
4.1 调试过程 12
4.2 程序执行过程 12
参考文献 15
附 录(关键部分程序清单) 16
1 课程设计介绍
1.1 课程设计内容
编写算法能够用基数排序算法对扑克牌进行排序。应能够选择按花色优先或按面值优先,初始扑克牌牌序要求能自动生成(随机生成)。
1.2 课程设计要求
1.花色的符号可自定,输出要求给出初始牌序和结果牌序。
2.参考相应资料,独立完成课程设计任务。
3.交规范课程设计报告和软件代码。
2 课程设计原理
2.1 课设题目粗略分析
根据课设题目要求,拟将整体程序分为三大模块。此三个模块相互独立,没有嵌套调用的情况,以下是三个模块的大体分析:
1.建立一个结构体数组存放整副扑克。
2.根据要求的扑克数及生成的随机数建立一个结构体数组存放需要排序的扑克。
3.用基数排序的方法对随机生成的扑克进行相应要求的排序
2.2 原理图介绍
2.2.1 功能模块图
图2. 1 功能模块图
2.2.2 流程图分析
1.随机生成需排序的扑克函数流程图,如图2.2所示:
Y
Y
图2.2生成随机扑克的流程图
利用一个for循环及随机函数rand(),利用每次循环生成的随机数对应的数值num建立初始的无序扑克,同时将huase、value分别赋给关键字key[0]、key[1]以对其进行排序
2. 对扑克进行花色优先排序的函数流程图,如图2.3所示:
Y
图2.3对扑克进行花色优先排序的流程图
对长为n的数组R,利用next域建立为静态链表,进行关键字先key[1](面值)后key[0](花色)的基数排序,排序后的数组按关键字key[0](花色)优先的顺序存放,利用静态链表依次将其输出。
3. 对扑克进行面值优先排序的函数流程图如图2.4所示:
Y
图2.4对扑克进行面值优先排序的流程图
对长为n的数组R,利用next域建成静态链表,进行关键字先key[0](花色)后key[1](面值)的基数排序,排序后的数组按关键字key[1](面值)优先的顺序存放,利用静态链表依次将其输出。
3 数据结构分析
3.1 存储结构
typedef struct
{int value ; // 扑克面值
char huase; // 扑克花色
int num; // 控制面值输出形式
int order; // 在同一花色扑克的位置
int key[2]; // 排序用的关键字
int next; // 下一个扑克的位置
}apoker; // 定义一个结构体表示一张扑克
apoker poker[52]; // 定义一个大小为52的结构体数,组存放整副扑克
apoker unsortpoker[max] ; // 定义一个足够大的结构体数组,存放需排序的扑克
typedef int temp[radix]; // 大小为关键字的基数的整形数组,用于基数排序的分配、收集
3.2 算法描述
1.初始化建立扑克的算法描述说明如下:
结构体名定义为apoker,poker[52],unsortpoker[max]是apoker类型,对其赋上每个结点的名字,每个名字对应自己的一个num,以控制面值的输出形式,value对应扑克的面值,huase对应扑克的花色。
for(i=0;i52;i++)/*建立整副扑克*/
{ j=i/13;/*将扑克分为四种花色*/
k=(i+2)%13; /*控制面值的输出形式*/
m=i%13;/*同一花色中所处的位置*/
poker[i].order=m;
if(j==0) poker[i].huase=3;/*花色赋值*/
else if(j==1) poker[i].huase=4;
else if(j==2) poker[i].huase=5;
else poker[i].huase=6;
if(k==0) poker[i].value=75;/*面值赋值*/
else if(k==1) poker[i].value=65;
else if(k==11) poker[i].value=74;
else if(k==12)
您可能关注的文档
- 数学与应用数学毕业论文-数域上的一元多形式环中的带余除法及其应用汇.doc
- 数学与应用数学毕业论文-有关三幂等矩阵秩等式的进一步探讨汇.doc
- 数学与应用数学毕业论文-有关除环上幂等矩阵的秩的等式的探讨汇.doc
- 数学与应用数学毕业论文-关于均值不等式的探讨汇.doc
- 数学与应用数学毕业论文-关于一类二次矩阵方程的解的进一步讨论汇.doc
- 数学与应用数学毕业论文-求方程的近似解方法及比较分析汇.doc
- 数学与应用数学毕业论文-浅谈我国双语教学的历史、现状与对策汇.doc
- 数学与应用数学毕业论文-浅析数学分析中的若干矛盾汇.doc
- 数学与应用数学毕业论文-特殊的积分不等式及其在高等数学中的应用汇.doc
- 数学与应用数学毕业论文-浅谈空间上的幂等算子汇.doc
文档评论(0)