文档介绍:课程设计报告
课程设计名称:数据结构课程设计
课程设计题目:扑克牌的排序
目录
1 课程设计介绍 1
课程设计内容 1
课程设计要求 1
2 课程设计原理 2
课设题目粗略分析 2
原理图介绍 2
功能模块图 2
流程图分析 3
3 数据结构分析 6
存储结构 6
算法描述 6
4 调试与分析 12
调试过程 12
程序执行过程 12
参考文献 15
附录(关键部分程序清单) 16
1 课程设计介绍
课程设计内容
编写算法能够用基数排序算法对扑克牌进行排序。应能够选择按花色优先或按面值优先,初始扑克牌牌序要求能自动生成(随机生成)。
课程设计要求
,输出要求给出初始牌序和结果牌序。
,独立完成课程设计任务。
。
2 课程设计原理
课设题目粗略分析
根据课设题目要求,拟将整体程序分为三大模块。此三个模块相互独立,没有嵌套调用的情况,以下是三个模块的大体分析:
。
。
原理图介绍
功能模块图
初始化生成整副扑克
随机生成需排序的扑克
对扑克按花色优先排序并输出
对扑克按面值优先排序并输出
图2. 1 功能模块图
流程图分析
,:
开始
i=1
i<=t
n=rand()
Y
r[i].huase=poker[n].huase
r[i].num=poker[n].num
r[i].order=poker[n].order
r[i].key[0]=poker[n].huase
r[i]..key[1]=poker[n].order
k=(n+2)%13
r[i].huase=poker[n].huase
r[i].num=poker[n].num
r[i].order=poker[n].order
r[i].key[0]=poker[n].huase
r[i]..key[1]=poker[n].order
k=(n+2)%13
N
K=0,1,11,122111111
Y
以%d输出value
以%c输出value
i++
结束
利用一个for循环及随机函数rand(),利用每次循环生成的随机数对应的数值num建立初始的无序扑克,同时将huase、value分别赋给关键字key[0]、key[1]以对其进行排序
2. 对扑克进行花色优先排序的函数流程图,:
开始
Y
i<n-1
i=0
Y
r[n].next=0
i=0
r[i].next=i+1
i++
N
i<=1
Y
调用distribute()、collect() 函数
i++
i=r[0].next
I
N
i!=0
Y
结束
输出人r[i].huase
r[i].value
对长为n的数组R,利用next域建立为静态链表,进行关键字先key[1](面值)后key[0](花色)的基数排序,排序后的数组按关键字key[0](花色)优先的顺序存放,利用静态链表依次将其输出。
3. :
开始
i=0
Y
i<n-1
Y
r[n].next=0
i=1
r[i].next=i+1
i++
N
i>=0
Y
调用distribute()、collect() 函数
i--
i=r[0].next
I
N
i!=0
Y
结束
输出人r[i].huase
r[i].value
对长为n的数组R,利用next域建成静态链表,进行关键字先key[0](花色)后key[1](面值)的基数排序,排序后的数组按关键字key[1](面值)优先的顺序存放,利用静态链表依次将其输出。
3 数据结构分析
存储结构
typedef struct
{int value ; // 扑克面值
char huase; // 扑克花色
int num; // 控制面值输出形式
int order; // 在同一花色扑克的位置
int key[2]; // 排序用的关