1、数据结构课程设计报告 数据结构课程设计报告数据结构课程设计报告 约约 瑟瑟 夫夫 环环 数据结构课程设计报告 目 录 1. 设计题目(约瑟夫环) 2. 运行环境(软、硬件环境) 3. 需求分析 4. 概要设计 1) 抽象数据类型 2) 算法设计的思想 3) 程序总体及主要算法的流程图 5. 源代码(带详细注释) 6. 运行结果分析 7. 收获、体会及意见 数据结构课程设计报告 设计题目设计题目 约瑟夫环,编号为 1,2 n 的 n 个人按顺时针方向围坐一圈,每人持有一 个密码(正整数) 。一开始任选一个正整数作为报数的上限值 m,从第一个人开 始按顺时针方向自 1 开始顺序报数,报到 m 时停
2、止报数,报 m 的人出列,将他 的密码作为新的m值, 从他的顺时针方向的下一个开始重新从1报数, 如此下去, 直至所有的人全部出列为止,设计一个程序求出出列顺序。 运行环境运行环境 DevC+ 需求分析需求分析 1. 使用单循环链表作为储存结构,并模拟该过程; 2. 从键盘输入开始时的总人数、初始报数上限值 m 及每个人的密码; 3. 按照出列顺序输出各人的编号。 概要设计概要设计 1 1) 抽象数据类型抽象数据类型 struct node int mm; int num; struct node *next; ; typedef struct node Linklist; Linklist
3、*createlist(Linklist *L) /根据人数创建链表 int t; Linklist *p,*q; printf(“请输入总人数 : “); scanf(“%d“, printf(“请输入初始上限值 : “); 数据结构课程设计报告 scanf(“%d“, for(t=1;tmm); p-num=t; if(L=NULL) L=q=p; else q-next=p; q=p; p-next=L; return L; 2 2) 算法设计的思想算法设计的思想 程序执行的命令包括: (1)构造链表; (2)输入数据; (3)执行报数,储存出列人的序号,删除出列人的信息以及把出列人 的
4、密码赋给 m; (4)结束。 本程序应包括三个模块: (1)信息录入(构造链表)模块。此模块将对数据进行初始化,构造 链表,并录入数据以便后续程序的使用。 (2) 结果输出模块。 此模块将根据前面所输入的数据对数据进行处理, 输出报数号码,删除报数节点,并继续进行处理。 (3)主程序模块。此模块实现整个程序的进入和退出,及各种初始化 处理。 数据结构课程设计报告 约瑟夫环约瑟夫环 主函数模块 信息录入模块 结果输出模块 3) 程序总体及主要算法的流程图程序总体及主要算法的流程图 1此部分为 createlist 函数。首先初始化变量,再输出提示性语句,等待用 户输入数据,将总人数和初始上限值分别存入 num 和 m。以 num 为上限值建立 单循环链表,最后返回 L。 数据结构课程设计报告 beginbegin 声明变量声明变