实验名称。班级。
学号。姓名。
实验日期年月日。
目录。一:实验目的。
二:需求分析。
三:概要设计。
四:详细设计。
五:调试分析。
六:实验总结。
样例:一、实验目的。
1. 了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。
2. 重点是线性表的基本操作在两种存储结构上的实现;其中以链表的操作为侧重点;并进一步学习结构化的程序设计方法。
二、需求分析。
约瑟夫问题(josephus problem):据说著名犹太历史学家 josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。
然而josephus 和他的朋友并不想遵从,josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
1. 约瑟夫问题的描述:编号为1,2,……n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。
一开始任选一个正整数作为初始报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数。
方法一】报m的人出列(将其删除),从他在顺时针方向上的下一个人开始重新从1报数,……如此下去,直到所有人全部出列为止。试设计一个程序求出出列顺序。要求利用单向循环链表存储结构模拟此过程,按照出列的顺序打印出各人的编号和此人密码。
方法二】报m的人出列(将其删除),将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从一报数,……如此下去,直到所有人全部出列为止。试设计一个程序求出出列顺序。要求利用单向循环链表存储结构模拟此过程,按照出列的顺序打印出各人的编号和此人密码。
2. 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入相应数据(即任意的人数n、初始报数上限值m以及每个人所持的密码),最终输出相应的出列序列。
3. 测试数据:
1) 首先假设m=6,n=7。设定7个人的密码依次为:3,1,7,2,4,8,4,则正确的出列顺序为:6,1,4,7,2,3,5。
2) m=6,n=1
3) m=6,n=0
前面一组为常规数据,后面两组为边缘数据。
三、概要设计。
为了实现上述操作,应以单向循环链表为存储结构。程序执行的命令包括:
方法一】1)构造链表。
2)输入人数n和初始报数上限值m
3)执行报数,储存出列人的编号,删除出列人的信息。
4)输出出列序列,即每个人的编号。
5)结束。方法二】
1)构造链表。
2)输入人数n和初始报数上限值m
3)输入每个人的密码。
4)执行报数,储存出列人的编号,删除出列人的信息以及把出列人的密码重新赋给m
5)输出出列序列,即每个人的编号和密码。
6)结束。四、详细设计。
#include<>
#include<>
typedef struct data //将尾结点的next域指向第一个结点,构成循环链表
printf("请任意输入一个数m:")
scanf("%d",&m);
if(m<=0) printf("输入错误");
dowhile(q->next!=q); 只剩最后一个结点时结束
printf("num:%d\tval:%d",q->>输出最后一个结点。
free(q); 释放最后一个结点
free(head); 释放头结点
printf("约瑟夫环结束,欢迎下次光临~·~n");
五、调试分析。
略……六、实验总结。略……
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...