1、 数学与计算机学院 课程设计说明书 课 程 名 称: 数据结构课程设计 课 程 代 码: 题 目: 猴子选大王 年级/专业/班: 2010 级软件工程 2 班 学 生 姓 名: 学 号: 开 始 时 间: 2011 2011 年 1111 月 9 9 日 完 成 时 间: 20112011 年 1212 月 3030 日 课程设计成绩: 学习态度及平 时成绩(30) 技术水平与实 际能力(20) 创新(5) 说明书(计算书、图纸、 分析报告)撰写质量(45) 总 分 (100) 指导教师签名: 年 月 日 1 数 据 结 构 课 程 设 计 任 务 书 一、设计题目 猴子选大王 二、 主要内容
2、 一堆猴子都有编号,编号是 1,2,3 .m ,这群猴子(m 个)按照 1-m的顺 序围坐一圈,从第 1 开始数,每数到第 N 个,该猴子就要离开此圈,这样依次 下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 三、具体要求及应提交的材料 要求:使用数组和循环链表等两种以上的存储方式来做 输入数据:输入 m,n m,n 为整数,nm; if(m100|mn; /输入报数的值 coutm; for(i=0;inext=NULL; newp-data=i+1; if(i=0) /如果链表中还没有数据存入,将存入第一个数据 top=newp; /及将其在头结点 pre= top; else pre
3、-next=newp; /如果头结点有元素,就存在为结点的下一 个 pre=newp; /将尾结点指向下一个 void danx:outs( ) /单向链表的输出操作 int n,i; /n 为报数值,i 为局部循环数值 Node *q=top; while(q-next!=NULL) /将 p 指针指向连尾 q=q-next; /如果 q 还不是尾结点,就下移 coutn; coutnext=NULL; /令 p 的指针域指空 q-next=p; /将 p 连接到连表尾 q=p; /q 下移 p=top; top=top-next; /top 头指针下移 delete p; /删除报到指定数
4、的结点 coutm; /输入猴子总数 for(i=0;inext=NULL; newp-num=i+1; if(i=0) /如果链表中还没有数据存入,将存入第一个数据 Head=newp; pre= Head; else /如果头结点有元素,就存在为结点的下一个 newp-next=Head; /将尾与头连接构成循环 pre-next=newp; pre=newp; void xunh:outs( ) /循环链表的输出操作 int n,i; /猴子总数 m,局部数值 i NodeType *q=Head, *p; /新建结点 q 并指向头 coutn; /输入要报的数 14 coutnext=q-ne