数据结构实验指导

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

综合试验数据结构课程设计一、数据结构课程设计要求学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。课程设计按照教学要求需要一周时间完成,两周中每天(按每周5天)至少要上3-4小时的机来调试C语言设计的程序,总共至少要上机调试程序15小时二、数据结构课程设计的具体内容本次课程设计完成如下模块(共5个模块,学生可以在其中至少挑选3个功能块完成,但有**号的模块是必须要选择的,多做可以加分)1、joseph环**任务:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。测试数据:m的初值为20,n=7,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?要求:输入数据:建立输入处理输入数据,输入m的初值,n,输入每个人的密码,建立单循环链表。输出形式:建立一个输出函数,将正确的输出序列2、迷宫求解**任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;要求:在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;3、单词统计系统功能:输入文本和单词集,程序可以统计出词集中各个单词出现的次数,出现位置所在行的行号,同一行出现两次的只输出一个行号。要求:文本串非空且以文件形式存放,统计匹配的词集非空。文件名和词集均由用户从键盘输入;“单词”定义:由字母构成的字符序列,中间不含空格符且区分大小写;待统计的“单词”在文本串中不跨行出现,它或者从行首开始,或者前置以一个空格符;存储结构使用线性表,分别用几个子函数实现相应的功能;测试数据:文本文件为本次实习中的word.c;待统计的词集为:intcharforwhilereturnstruct。输出:分行输出每个单词出现的次数和出现位置所在行的行号,同一行出现两次的只输出一个行号。4、运动会分数统计任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)功能要求:1).可以输入各个项目的前三名或前五名的成绩;2).能统计各学校总分,3).可以按学校编号、学校总分、男女团体总分排序输出;4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;5.校园导游咨询系统任务:编制一个为来访客人进行最短路径导游的程序要求:从学校的平面图上选取n个有代表性的景点,根据用户指定的起点和终点输出相应路径,或根据用户指定的景点输出景点的信息。三、上交相关内容要求上交的成果的内容必须由以下四个部分组成,缺一不可1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);2.上交程序的说明文件:(保存在.txt中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;3.课程设计报告:(保存在word文档中,文件名要求按照姓名-学号-课程设计报告起名,如文件名为张三-001-课程设计报告.doc)按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;其中包括:a)需求分析:在该部分中叙述,每个模块的功能要求b)概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。c)详细设计各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。d)调试分析测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。4.课设总结:(保存在word文档中)总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容四、课程设计窗口展示部分1.上交成果中要有你的磁盘文件说明2.上交磁盘的文件结构要清晰,你的主程序可以编译成exe文件Java实现joseph环importjava.util.Scanner;/***使用数组实现约瑟夫环问题*由m个人围成一个首尾相连的圈报数。*从第一个人开始,从1开始报数,报到n的人出圈,*剩下的人继续从1开始报数,直到所有的人都出圈为止。*对于给定的m和n,求出所有人的出圈顺序.*/publicclassRingTest{publicstaticvoidmain(String[]args){System.out.println(程序说明如下:);System.out.println(由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.);//提示输入总人数System.out.println(请输入做这个游戏的总人数:);Scannersca=newScanner(System.in);intm=sca.nextInt();//提示输入要出圈的数值System.out.println(请输入要出圈的数值:);intn=sca.nextInt();System.out.println(按出圈的次序输出序号:);//创建有m个值的数组int[]a=newint[m];//初始长度,以后出圈一个,长度就减一intlen=m;//给数组赋值for(inti=0;ia.length;i++)a[i]=i+1;//i为元素下表,j代表当前要报的数inti=0;intj=1;while(len0){if(a[i%m]0){if(j%n==0){//找到要出圈的人,并把圈中人数减一System.out.print(a[i%m]+);a[i%m]=-1;j=1;i++;len--;}else{i++;j++;}}else{//遇到空位了,就跳到下一位,但j不加一,也就是这个位置没有报数i++;}}}}Java实现迷宫publicclassMaze{classCell//内部类{privateintrow;privateintcol;privateCellfrom;//指向父节点publicCell(introw,intcol,Cellfrom){this.row=row;this.col=col;this.from=from;}}char[][]maze={{'#','#','#','#','B','#','#','#','#','#','#','#'},{'#','#','#','#','.','.','.','.','#','#','#','#'},{'#','#','#','#','.','#','#','#','#','.','.','#'},{'#','.','.','.','.','#','#','#','#','#','.','#'},{'#','.','#','#','#','#','#','.','#','#','.','#'},{'#','.','#','#','#','#','#','.','#','#','.','#'},{'#','.','#','#','.','.','.','.','.','.','.','#'},{'#','.','#','#','.','#','#','#','.','#','.','#'},{'#','.','.','.','.','#','#','#','.','#','.','#'},{'#','#','.','#','.','#','#','#','.','#','.','A'},{'#','#','.','#','#','#','.','.','.','#','#','#'},{'#','#','#','#','#','#','#','#','#','#','#','#'}};publicvoidshow(){for(inti=0;imaze.length;i++){for(intj=0;jmaze[i].length;j++)System.out.print(+maze[i][j]);System.out.println();}}//把与from集合中相邻的可染色节点染色,被染色节点记入dest//一旦发现出口将被染色,则返回当前的“传播源”节点publicCellcolorCell(SetCellfrom,SetCelldest){IteratorCellit=from.iterator();while(it.hasNext()){Cella=it.next();Cell[]c=newCell[4];c[0]=newCell(a.row-1,a.col,a);//向上c[1]=newCell(a.row,a.col-1,a);//向左c[2]=newCell(a.row+1,a.col,a);//向下c[3]=newCell(a.row,a.col+1,a);//向右for(inti=0;i4;i++){if(c[i].row0||c[i].row=maze.length)continue;if(c[i].col0||c[i].col=maze[0].length)continue;charx=maze[c[i].row][c[i].col];if(x=='B')returna;if(x=='.'){maze[c[i].row][c[i].col]='?';//对可通过路径进行标记dest.add(c[i]);}}}returnnull;}publicvoidresolve(){SetCellset=newHashSetCell();set.add(newCell(9,11,null));for(;;){SetCellset1=newHashSetCell();Cella=colorCell(set,set1);if(a!=null){System.out.println(找到解!);while(a!=null){maze[a.row][a.col]='+';//标出通路路径a=a.from;}break;}if(set1.isEmpty()){System.out.println(无解!);break;}set=set1;}}p

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功