数据结构课程实训
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
2
1
X-1,Y-1
4
X-1,Y
X-1,Y+1
0
5 6 7 8 9 10
X,Y-1
X,Y
X,Y+1
5
X+1,Y-1
X+1,Y
6
X+1,Y+1
11 12 13 14 15 16 17 18 19
7
课题一:迷宫问题
2) 程序要求 (1) 迷宫的提供: A、可由运行过程中,用户自己输入迷宫 B、在文件或者程序中存储多个迷宫结构,运行 时随机抽取 C、在文件或者程序中存储多个迷宫结构,运行 时可以随机抽取。用户也可以选择添加迷宫,增 加文件或者程序中的迷宫库。 (2) 设计算法完成迷宫问题的求解; 图形显示迷宫的过程,并将最后结果输出。 一旦发现没有出口,程序显示无出口。
课题二:各种排序算法时间性能的比较
对各种排序方法(直接插入排序、希尔排序、起 泡排序、快速排序、直接选择排序、堆排序和 归并排序)的时间性能进行比较。 2) 基本要求 (1) 设计并实现上述各种排序算法; (2) 产生正序和逆序的初始排列分别调用上述排 序算法,并比较时间性能; (3) 测试不同数据量,不同排序方法的比较曲线 (10、100、1000、10000、100000等)
6、程序的创新(附加10分)
课题一:迷宫问题
1)问题描述 迷宫求解是实验心理学中的一个பைடு நூலகம்典问题,心理学家 把一只老鼠从一个无顶盖的大盒子的入口处赶进迷宫,迷 宫中设臵很多隔壁,对前进方向形成了多处障碍,心理学 家在迷宫的唯一出口处放臵了一块奶酪,吸引老鼠在迷宫 中寻找通路以到达出口。例如,图2所示为一个迷宫示意 图,其中双边矩形表示迷宫,1代表有障碍,0代表无障碍。
#include"stdio.h" main() { char c,s[200]; int i=0; while((c=getch())!='#') { if(c==13){ putchar('\n');s[i++]='\n';} putchar(c);s[i++]=c; } s[i]='\0'; system("pause"); puts(s); system("pause"); }
课题六:猴子选大王
3) 设计思想 核心数据结构定义一个循环单链表,或者循环双 向链表。对链表实行插入、删除等操作。在程 序运行之初,输入猴子的个数,为循环链表插 入节点。每次猴子数数的过程中,一旦需要退 出的猴子,使用节点删除操作。 绘图的实现:定义一个绘图函数,显示当前链表 状态。并能够在计数到第几只猴子的时候显示 该猴子的选中状态(可用不同的颜色实现)。 每次计数操作和删除操作执行后,后更新画面。
课题七:宿舍管理软件
(4) 修改学生基本信息(班级,年龄等); (5) 学生调换宿舍或床位处理(在查询两个宿舍 的基本设备没有故障的前提下,才准许调换宿 舍); 宿舍设备管理部分: (1) 基本设备的保修以及修理信息 (2)根据宿舍查询基本设施 (3) 根据宿舍查询基本设施是否完备 (4) 可以搜索查询所有的故障设备
课题七:宿舍管理软件
3) 设计思想 可以建立两组线性表,分别是学生信息和宿舍信 息。信息表的内容均存于文件中。当程序运行 最初,需要对宿舍进行全面初始化,也就是宿 舍的所有基础设施完备。然后在使用过程中, 可以对学生和对基本设施进行操作和管理。
课题八:机票管理系统
1)问题描述 一机场每天有n个航班,每个班次都有一班次号(1、2、 3…n),固定的起飞时间,固定的路线(起始站、终 点站),大致的飞行车时间,固定的额定载客量。如 班次 起飞时间 起点站 终点站 飞行时间 额定载量 已定票人数 是否起飞 1 8:00 天津 汉口 2 145 130 未 2 6:30 天津 成都 0.5 140 140 已 3 7:00 天津 成都 0.5 140 120 已 4 10:00 天津 成都 0.5 140 120 未 … 试设计一个机票管理系统,对机场的售票情况进行管理。
补充:随机函数
在使用随机数函数random()之前,应包含文件 #include <stdlib.h> 然后使用下述函数初始化: randomize();/* init the random number generator */ 以后就可以直接使用random()函数来产生需要的数据: 如果需要产生10以内的数,使用random(10)就可以了;产生100以 内的数,使用random(100)就可以了。 在C++中,产生随机数: #include <time.h> #include <stdlib.h> 然后 srand(time(0)); //以当前时间当做随机种子 rand(); //产生一个位于0--32767之间的随机数
课题六:猴子选大王
2)基本要求 1) 首先创建循环链表。 2) 输入猴子的个数N,创建一个长度为N的循环链表, 并在单链表中填入猴子的编号 ; 3) 输入报数编号M,然后从第一只猴子开始报数; 4)数到N让这个猴子出列(即将此猴子在循环链表中 删除); 5) 接着开始报数,重复第三步,直到剩余最后一只猴子, 将该猴子的编号输出。 要求用图形界面实现猴子报数的过程。
实训时间安排
17周周六 教室:题 目与分析 上机1 查找资料 17周周日 教室:题 目与分析 18周周一 自行安排 上机3 需求分析 18周周二 自行安排 18周周三 自行安排 18周周四 自行安排 18周周五 自行安排
上机2 分组并选 题
上机4 框架与核 心结构体
19周周一 自行安排
上机5 编码与调 试
上机6 编码与调 试
上机7 测试与调 试
18周周六 自行安排
18周周日 自行安排
19周周二 自行安排
19周周三 自行安排
上机7 测试与实验报 告
上机8 实验报告
上机9 实验报告与准 备答辩
上机10 答辩
上机11 答辩
分数统计:
1、考勤分(20分):点名一次不在扣2分;五次 点名不在不及格;打游戏、看视频扣3分; 2、在项目开发过程中完成的工作量(30分) 3、功能完成情况(10分) 4、对知识点的掌握情况(20分) 5、任务书(20分)
数据结构课程实训
软件3111、软件3112 指导教师:汪朝霞、王飞、范宏宇
实训目的:
1、加强C语言、数据结构知识点的掌握 2、了解系统开发的步骤 3、加强编程能力 4、加强团队协作能力
实训要求:
1、课题的选择(每课题最多可选三组) 2、分组与选题(3~4人) 3、题目的需求分析与中期检查 4、实训期间考勤 5、提交资料(1人1份实训报告,1组1份PPT,1 组1份源代码) 6、答辩(按提交顺序分组答辩)
课题一:迷宫问题
0 0 1 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 3 4
课题八:机票管理系统
A:当查询出已定票人数小于额定载量且当前系统时间 小于起飞时间时才能售票,自动更新已售票人数 B:退票时,输入退票的班次,当本航班飞机未发出时 才能退票,自动更新已售票人数。 (5)订票和退票都可提前十天的操作 (6)由于数据量较大,要再文件中保存 3) 设计思想 定义一组线性表,专门存储航班的基本信息,包括航班 号、起点、终点、时间、总人数等信息。
课题二:各种排序算法时间性能的比较
提示:1、用户要求输入需要测试的数据的数量 2、用户可以选择排序的方法 或每一种方 法都进行分析排序 3、用一个结构体类型存储所有的测试数 据,为了保证后期的分析,当随机生成的数据 量比较大的时候,可以用文件存储这些数据, 便于用户查看数据原型 4、输出时间对比,和排序后的结果 5、对比的分析用户只需要在实验报告中体 现
课题三:哈夫曼编码
核心问题: 1)如何从文件中读取存于文件中 的字符集,并分析每一个字符以及其 频率 2)将字符替换成哈弗曼编码后将编 码存入到文件中并保存
课题四:文章编辑
1)问题描述 输入一页文字,程序可以统计出文字、数字、空格的个数。 2) 基本要求 静态存储一页文章,每行最多不超过80个字符,共N行;要求 (1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。 (4)替换字符串 (5)可以保存到文件中,也可以在文件中打开
补充:文件的处理
FILE *fp; int i=L->last; if((fp = fopen("FileTest.txt","w"))==NULL) { printf("打开文件失败"); exit(1); } while(i!=-1) { if(fwrite(&L->s[i--],sizeof(Student),1,fp)!=1) printf("写入错误!"); }
课题六:猴子选大王
1)问题描述 n只猴子围坐成一个圈,按顺时针方向从1到n编号。 然后从1号猴子开始沿顺时针方向从1开始报数,报 到m的猴子出局,再从刚出局猴子的下一个位臵重 新开始报数,如此重复,直至剩下一个猴子,它 就是大王。设计并编写程序,实现如下功能: (1)要求由用户输入开始时的猴子数n、报数的最 后一个数m。 (2)给出当选猴王的初始编号。
课题八:机票管理系统
2) 基本要求 功能要求: (1)录入班次信息(信息用文件保存),可不定时地 增加班次数据; (2)浏览班次信息,可显示出所有班次当前状况 (如果当前系统时间超过了某班次的起飞时间,则 显示“此班已发出”的提示信息)。 (3)查询路线:可按班次号查询 ,可按终点站查 询; (4)售票和退票功能
课题七:宿舍管理软件
1)问题描述 设某宿舍有四层楼,每层楼有30个房间,每个房间有4个 床位。每个房间还有四张床、四个书桌、四个凳子、两 个灯、两个风扇等基础设臵。要求设计一个宿舍管理软 件。 实现对宿舍人员和基本设施的管理工作。 2) 基本要求 学生管理部分: (1) 学生的入住处理; (2) 学生退房处理; (3) 输出所有学生入住信息(按房间号和床号有序); 搜索并输出单个学生的基本信息(学号,姓名,班级,年 龄,宿舍等信息)。 搜索并输出某个宿舍的所有同学的基本信息
课题四:文章编辑
3) 设计思想 定义一个串,可使用顺序串或者链表串。实现串 的插入、删除、修改、替换、遍历等功能。并 能够把串保存在文件中。 可以通过打开文件和保存文件,将文件中的信息 载入到串中,或者将串中的信息保存到文件中。 具体可参考线性表的操作实例。以及书上《串》 章节。
课题四:文章编辑
补充:文件的处理
FILE *fp; Student std; if((fp = fopen("FileTest.txt","r"))==NULL) { printf("打开文件失败"); exit(1); } while( fread(&std,sizeof(Student),1,fp)==1) { L->last++; L->s[L->last]=std; printf("%s %d %c\n",std.name,std.age,std.sex); } fclose(fp);
课题三:哈夫曼编码
1) 问题描述 设某编码系统共有n个字符,使用频率分别为{w1, w2, …, wn},设计一个不等长的编码方案,使得该编码系统的 空间效率最好。 2) 基本要求 (1) 在文件中存储一系列字符代码; (2) 编写程序分析文件中各个字符以及每个字符出现的频 率; (3) 将各个字符及其频率分析成结点以及结点的权值,构 造哈弗曼树。 (4) 分析构造的哈夫曼树,列出相应的哈弗曼编码 (5) 把生成的编码替换原文件中的字符,并将结果存储到 文件中
课题五:校园导游程序
1)问题描述 用无向网表示你所在学校的校园景点平面图,图中顶点 表示主要景点,存放景点的编号、名称、简介等信息,图 中的边表示景点间的道路,存放路径长度等信息。要求能 够回答有关景点介绍、游览路径等问题。 2)基本要求 (1) 查询各景点的相关信息; (2) 查询图中任意两个景点间的最短路径。 (3) 能够将图的信息保存到文件中,并指定文件打开。 (4) 增加、删除、更新有关景点和道路的信息。