数据结构实验指导数据结构实验指导前言数据结构是计算机程序设计的重要理论技术基础,不仅是计算机学科的核心课程,而且己成为其它理工专业的热门选修课程。数据结构课程主要研究信息的逻辑结构及其基本操作在计算机中的表示和实现,其教学要求之一是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,但由于这门课程相对抽象且内容复杂,因此,在数据结构的整个教学过程中,辅助课堂教学的实验非常有助于帮助学生学好这门课程,培养学生独立思考和解决问题的能力,锻炼学生的动手能力,希望能对我校的《数据结构》教学工作有所帮助。目录实验1:C++语言基础练习.........................................................................................1实验2:线性表及其应用.............................................................................................4实验3:栈和队列.......................................................................................................12实验4:串及其应用...................................................................................................14实验5:数组...............................................................................................................16实验6:二叉树及其应用...........................................................................................18实验7:图的应用.......................................................................................................20实验8:查找、排序...................................................................................................22附录:实验报告格式..................................................................................................24实验1:C++语言基础练习一、实验目的对C++语言的复习,增强学生对结构体数组和指针的学习,尤以结构体的应用和指针的操作,还有C++中类作为重点。二、问题描述1、构造一个学生结构体数组,成员包括学号,姓名,四门成绩,以及平均成绩;2、从键盘上输入学生的学号,姓名和四门成绩;3、找出学生中考试没有通过的学生姓名并输出;找出考试在90分以上的学生并输出。三、实验要求1、要求用链表存储学生的记录,并设计出输入和查找的基本操作算法。2、在实验过程中,分析算法的时间复杂度和空间复杂度进行分析。四、实验环境PC微机DOS操作系统或Windows操作系统TurboC程序集成环境或VisualC++程序集成环境五、实验步骤1、用所选择的语言实现算法;3、测试程序,并对算法进行时间和空间复杂度分析。六、实验报告要求实验报告应包括以下几个部分:1、问题描述;2、测试结果的分析与讨论,在测试过程中遇到的主要问题及采取的解决措施。3、设计与实现过程中的体会,进一步的改进设想。4、实现算法的程序清单,应有足够的注释。【算法实现】#definem4/*每个学生所学习课程数*/#defineNULL0typedefstructstnode{intid;/*学号*/charname[16];/*姓名*/intclass[4];/*所有课程成绩分别存储在class[0],class[1],class[2],…中*/floatave;/*学生个人所有课程的平均成绩*/structstnode*next;/*指针域*/}students;students*head;/*head为指向学生单链表的头指针,且为全局变量*/intn;/*参加成绩管理的班上的学生个数*/average()/*求每门课程的平均成绩的函数*/{inti,j;/*i为课程数,j为学生数*/floatsum,aver;students*p;printf("ClassAverageresult\n");printf("*******Class*********ClassAverage*******\n");for(i=0;inext)/*求某一门课程的所有学生的得分总和*/{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()/*找含有课程不及格的学生,如有则输出它的学号、姓名、所有课程成绩、...