- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据 结 构 实 验
指 导
数 据 结 构
实验指导
南昌大学计算机系
2011年3月
前 言
数据结构是计算机程序设计的重要理论技术基础,不仅是计算机学科的核心课程,而且己成为其它理工专业的热门选修课程。数据结构课程主要研究信息的逻辑结构及其基本操作在计算机中的表示和实现,其教学要求之一是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,但由于这门课程相对抽象且内容复杂,因此,在数据结构的整个教学过程中,辅助课堂教学的实验非常有助于帮助学生学好这门课程,培养学生独立思考和解决问题的能力,锻炼学生的动手能力,希望能对我校的《数据结构》教学工作有所帮助。
目 录
实验1:C++ 语言基础练习 1
实验2:线性表及其应用 4
实验3:栈和队列 12
实验4:串及其应用 14
实验5:数组 16
实验6:二叉树及其应用 18
实验7:图的应用 20
实验8:查找、排序 22
附录:实验报告格式 24
实验1:C++ 语言基础练习
一、实验目的
对C++语言的复习,增强学生对结构体数组和指针的学习,尤以结构体的应用和指针的操作, 还有C++中类作为重点。
二、问题描述
构造一个学生结构体数组,成员包括学号,姓名,四门成绩,以及平均成绩;
从键盘上输入学生的学号,姓名和四门成绩;
找出学生中考试没有通过的学生姓名并输出;找出考试在90分以上的学生并输出。
三、实验要求
要求用链表存储学生的记录,并设计出输入和查找的基本操作算法。
在实验过程中,分析算法的时间复杂度和空间复杂度进行分析。
?四、实验环境
PC微机
DOS操作系统或 Windows 操作系统
Turbo C 程序集成环境或 Visual C++ 程序集成环境
?五、实验步骤
1、用所选择的语言实现算法;
测试程序,并对算法进行时间和空间复杂度分析。
六、实验报告要求
实验报告应包括以下几个部分:
问题描述;
测试结果的分析与讨论,在测试过程中遇到的主要问题及采取的解决措施。
设计与实现过程中的体会,进一步的改进设想。
实现算法的程序清单,应有足够的注释。
【算法实现】
#define m 4 /*每个学生所学习课程数*/
#define NULL 0
typedef struct stnode
{
int id; /*学号*/
char name[16]; /*姓名*/
int class[4]; /*所有课程成绩分别存储在class[0],class[1],class[2],…中*/
float ave; /*学生个人所有课程的平均成绩*/
struct stnode *next; /*指针域*/
}students;
students *head; /*head 为指向学生单链表的头指针,且为全局变量*/
int n; /*参加成绩管理的班上的学生个数*/
average() /*求每门课程的平均成绩的函数*/
{
int i,j; /*i为课程数,j为学生数*/
float sum,aver;
students *p;
printf(Class Average result\n);
printf(*******Class*********Class Average*******\n);
for(i=0;im;i++) /*分别求出所有课程的平均分,循环次数为所有课程的数目*/
{
j=0;
sum=0;
p=head;
while(p-next) /*求某一门课程的所有学生的得分总和*/
{
sum=sum+p-class[i];
p=p-next;
j++;
}
aver=sum/j; /*求某一门课程的平均分*/
printf( Class%d %16.2f\n,i+1,aver);
}
printf(*****************************************\n\n);
}
nopass() /*找含有课程不及格的学生,如有则输出它的学号、姓名、所有课程成绩、它的所有课程的平均分*/
{
int i,j;
students *p;
p=head; /*从
文档评论(0)