当前位置:文档之家› 数据结构--猴子选大王

数据结构--猴子选大王

课程设计说明书课题名称:猴子选大王学生学号:专业班级:计算机科学与技术学生姓名:学生成绩:指导教师:课题工作时间:至摘要本次程序程序设计的主要目的是解决变相的“约瑟夫环”问题---猴子选大王。

从而使复杂的选举工作变得明朗化。

全程序以数据结构(C语言)中的循环单链表为主要的设计支柱,利用了C语言简洁紧凑、灵活方便,语法限制不太严格,程序设计自由度大,生成目标代码质量高,程序执行效率高等方面的优点。

循环单链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环,基于这样的特点,它适合处理具有环形结构的数据元素序列。

在程序代码的编写中,运用了结构体类型(struct Node),动态申请内存空间函数malloc(),释放动态申请内存空间函数free()等类型,同时也具有多种循环、条件语句控制程序流向,如:嵌套if else语句,多重for循环语句,还有链表中结点指针(p->next),从而使程序完全结构化。

这样编写出的完整程序代码可以实现“猴子选大王”功能,输入猴子的数目m,循环数n,对m个猴子进行编号,通过嵌套if else语句,for语句,一遍一遍的循环,判断,删除,直到只剩下最后一个猴子,即大王。

这样就可以实现所需的基本功能了。

关键词:数据结构;循环;单链表AbstractThe main purpose of the program design process to solve the form of "Joseph Ring" in the election --- monkey king. So complex it became clear the election.All procedures for data structures (C language) in single-cycle design of the main pillars of the list, using the C language simple and compact, flexible and convenient, the syntax is not strictly limited, program design flexibility to produce high quality object code, program execution the advantages of higher efficiency. Single-loop single-linked list is another form of list, its structural features is the last node list pointer field is no longer the end of the tag, but point to the list the first node, so that form a ring list, based on Such features, it has a ring structure for the data processing sequence of elements.The preparation of the program code, the use of a structure type (struct Node), dynamic application memory function malloc (), the release of dynamic memory functions for free () and other types, but also with a variety of loop, conditional statements control program flow such as: nested if else statements, multiple for loop, there is a linked list node pointer (p-> next), to make the program fully structured.Write such a code can achieve a complete "Monkey King selected" feature, enter the number of monkeys m, cycles n, for number of monkeys on the m-by nested if else statements, for statements, loop over and over again, judge, removed until there are only a monkey, or king. This can achieve the required basic function.Keywords: data structures; circulation; single linked list第一章课程设计目的与要求1.1 课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。

2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风1.2 课程设计的实验环境课程设计使用C语言工具,C语言作为一种最基本简单的程序设计语言,C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。

许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的。

用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。

常用的C语言IDE(集成开发环境)有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++ ,Borland C++ Builder,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free, win-tc 等等……对于一个初学者,Microsoft Visual C++是一个比较好的软件。

界面友好,功能强大,调试也很方便1.3 课程设计的要求1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。

前期准备工作完备与否直接影响到后序上机调试工作的效率。

在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。

2、.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。

3、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。

第二章课程设计内容2.1 问题描述1、一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

2、基本要求:输入数据:输入m,n 为整数3、输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能。

2.2需求分析一群猴子(m个)按照编号的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

程序规定:(1)在程序中输入猴子数m、要报的数n(2),对猴子进行编号(3)利用循环链表,依次序删除猴子,找出最后一个猴子,即为大王,输出这只猴子的编号2.3具体设计和实现1.对每一个猴子进行编号r=q=(listnode *)malloc(sizeof(listnode));for(i=1;i<n;i++){p=(listnode*)malloc(sizeof(listnode));q->data=i;q->next=p;q=p;}p->data=n;p->next=r;r=p;2.每数到n便删除该猴子,当循环单链表只剩一个时,输出该编号for(i=1;i<=n-1;i++){for(j=1;j<=k-1;j++)p=p->next;q=p->next;p->next=q->next;if(i % 10==0)free(q);}printf("\n");r=p;return r;}void outring(int n,linklist r){int i;listnode *p;p=r;printf("猴子大王:");printf("%4d\n",p->data);3.主函数int main(){linklist r;int n,k;linklist initring(int n,linklist r);linklist deletedeath(int n,int k,linklist r); void outring(int n,linklist r);printf("请输入猴子总数m:");scanf("%d",&n);printf("请输入n:");scanf("%d",&k);r=initring(n,r);r=deletedeath(n,k,r);outring(n,r);}2.4运行结果分析输入猴子的数目以及n最后得到结果运行结果如下:得到了预期结果第三章课程设计总结次课程设计在整整一周的时间内得以完成,全部内容主要包括:目录,课题设计背景,详细设计,设计结果及分析等方面的内容,主要通过上网收集资料,查找参考书目,了解图书管理的设计背景,明确设计方向和内容,在此基础上形成了该课程设计的的基础框架。

相关主题