1、 第 1 页 课程设计报告课程设计报告 课程名称 数据结构课程设计 设计题目 猴子选大王+ joseph环+纸牌游戏 院系 计算机科学与信息工程学院 专业 计算机科学与技术 班级 姓名 学号 指导教师 日期 8/3/2019 一一. 目的目的与与要求要求 1. 巩固和加深对常见数据结构的理解和掌握 2. 掌握基于数据结构进行算法设计的基本方法 3. 掌握用高级语言实现算法的基本技能 4. 掌握书写程序设计说明文档的能力 5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力 二二. 课程设计内容说明课程设计内容说明 1. 猴子选大王 (1) 对设计任务内容的概述 任务:一堆猴子都有编号,
2、编号是 1,2,3 .m ,这群猴子(m 个)按照 1-m 的顺序围坐一圈,从第 1 开始数,每数到第 N 个,该猴子就要离开此圈,这 样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 (2) 需求分析或功能描述 首先要定义数据类型,定义一个结构体, 包含猴子的编号和指向下一个猴 子的指针。 然后,根据猴子的数量 m创建一个循环链表,相当于所有的猴子围成一圈。 最后根据 N 的值,将猴子依次离开此循环链表,输出猴子离开的顺序,将 最后一个输出的猴子为猴王。 (3) 概要设计或程序流程图 第 2 页 (4) 详细设计或源代码说明 文件“list1.cpp” 开始 定义结构体存储猴子 创建
3、循环链表 mdata 输出 p-next-data q=p-next free(q) p!=p-next No 猴子选大王流程图 第 3 页 typedef int Elemtype; typedef struct Mnode /创建结构体 Elemtype data; /猴子编号 struct Mnode *next; /指向下一个猴子的指针 MNode; /函数声明 struct Mnode* Creat_clist1(MNode *clist1,int a); int Kingmonkey(MNode*clist1,int a,int b); int list1() /主函数直接调用函数
4、 int m,n; /用来存储猴群的数量, S1: printf(“请输入猴群的数量 m:“); scanf(“%d“, /猴群数量 printf(“请输入每数到第 N 个 n:“); scanf(“%d“, /每次数 N 个 if(m=1;i-) p=(MNode*)malloc(sizeof(MNode); /开辟内存空间 p-data=i; /猴子编号 p-next=clist1; clist1=p; if(i=a) q=p; /用 q 指向链表最后一个结点 q-next=clist1; /构成循环链表 return clist1; /clist1 即为指向第一个结点的指针 /运算并输出猴王函数 int Kingmonkey(MNode*clist1,int a,int b) MNode *p,*q; p=clist1; int i; print