1、数据结构实验实验指导书及答案信电工程学院计算机科学和技术教研室编2011.12数据结构实验所有代码整理作者郑涛声明:在这里我整理了数据结构实验的所有代码,希望能对大家的数据结构实验的考试有 所帮助,大家可以有选择地浏览,特别针对一些重点知识需要加强记忆(ps:重点知识最好让孙天凯给出),希望大家能够在数据结构实验的考试中取得令人满意的成绩,如果有做的不好的地方请大家谅解并欢迎予以指正。实验一熟悉编程环境实验预备知识:1. 熟悉本课程的语言编译环境(TC 或 VC),能够用 C 语言编写完整的程序,并能够发现和改正错误。2. 能够灵活的编写C 程序,并能够熟练输入C 程序。一、实验目的1. 熟悉
2、C 语言编译环境,掌握C 程序的编写、编译、运行和调试过程。2. 能够熟练的将C 程序存储到指定位置。二、实验环境 硬件:每个学生需配备计算机一台。 软件:Windows 操作系统+Turbo C;三、实验要求1. 将实验中每个功能用一个函数实现。2. 每个输入前要有输入提示(如:请输入2 个整数当中用空格分割:),每个输出数据都要求有内容说明(如:280 和 100 的和是:380。)。3. 函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。四、实验内容1. 在自己的U 盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹)
3、,本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。2. 编写一个输入某个学生 10 门课程成绩的函数(10 门课程成绩放到结构体数组中, 结构体包括:课程编号,课程名称,课程成绩)。3. 编写一个求 10 门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高成绩,则每个最高成绩均输出。4. 编写一个求10 门成绩平均成绩的函数。5. 编写函数求出比平均成绩高的所有课程及成绩。#include#includestruct subjectint subject_id;char subject_name20; double subject_grades;st
4、ruct subject sub10; void input()int i;printf(please input:n); for(i=0;i10;i+)scanf(%d %s %lf,&subi.subject_id,&subi.subject_name,&subi.subject_g rades);printf(you just input:n); for(i=0;i3;i+)printf(%d %s %lfn,subi.subject_id,subi.subject_name,subi.subject_g rades);void subject_max()int i,flag;doubl
5、e max=sub0.subject_grades; for(i=0;imax)max=subi.subject_grades; flag=i;printf(Thehighscoreofsubject is %s %lfn,subflag.subject_name,max);void subject_average()int i;double average,sum=sub0.subject_grades; for(i=1;i10;i+)sum+=subi.subject_grades;average=sum/10;printf(subjects average is %lfn,average
6、);void subjct_gtaverage()int i,flag;double average,sum=sub0.subject_grades; for(i=1;i10;i+)sum+=subi.subject_grades;average=sum/10; for(i=0;iaverage)flag=i;printf(subjectgreaterthanaverage is %s %lfn,subflag.subject_name,subflag.subject_grades);int main()input(); subject_max(); subject_average(); su
7、bjct_gtaverage();return 0;实验二顺序表的基本操作实验预备知识:1. 熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。2. 掌握结构体和结构体数组的访问与使用。3. 熟练实现顺序表类型和变量(如下所示)定于、熟悉顺序表的访问原理(顺序存储 、随机访问)。一、实验目的1. 掌握顺序表的建立、数据元素的插入和删除、掌握数据元素的访问。2. 能够熟练的使用函数来实现顺序表的各种操作。二、实验环境 硬件:每个学生需配备计算机一台。 软件:Windows 操作系统+Turbo C;三、实验要求1. 定义一顺序表类型,并定义顺序表。2. 将教材中顺序表的建立、初始化、插入、
8、删除等函数实现。3. 顺序表能够存储10 名学生的基本信息(包括姓名、学号和成绩)。4. 由主函数按照用户要求对各个顺序表操作访问。5. 每次操作之前要有明确的说明,操作后要输出操作结果。6. 分析顺序表的插入、删除、查找的时间和空间复杂度。四、实验内容1. 在自己的U 盘的“姓名+学号”文件夹中创建“实验2”文件夹,本次实验的所有程序和数据都要求存储到本文件夹中。2. 完成顺序表操作的如下函数:建立,初始化,增加,插入,删除。#include stdio.h #include malloc.h #include string.h#define LIST_INIT_SIZE 1#define
9、LISTINCREMENT 1struct stuchar name6; char num3; int cj;struct sqliststruct stu *elem; int length;int listsize;void main()struct sqlist* initlist_hc(); void cshlist_hc(struct sqlist *l);void listinsert_hc(struct sqlist *l);void listdelete_hc(struct sqlist *l);void listhb_hc(struct sqlist *l1,struct s
10、qlist *l2,struct sqlist *l3); struct sqlist *l1,*l2,*l3;char f;int i, k=0;printf(请选择对顺序表的操作,操作菜单如下:n); for(i=0;i80;i+)printf(*);printf(建立顺序表(C)n);printf(初始化顺序表(N)n);printf(顺序表中插入元素(I)n);printf(顺序表中删除元素(D)n);printf(合并顺序表(H)n);printf(退出系统(E)n);for(i=0;ielem=(struct stu*)malloc(LIST_INIT_SIZE*sizeof(st
11、ruct stu); if(!l-elem)printf(出错!n);l-length=0;l-listsize=LIST_INIT_SIZE;printf(请输入信息以-1结束:n); scanf(%s %s %d,x,y,&z); while(z!=-1)if(l-length=l-listsize)newbase=(struct stu*)realloc(l-elem,(l-listsize+LISTINCREMENT)*sizeof(struct stu);if(!newbase)printf(出错!n);l-elem=newbase;l-listsize+=LISTINCREMENT
12、; strcpy(l-eleml-length.name,x);strcpy(l-eleml-length.num,y); l-eleml-length.cj=z; scanf(%s %s %d,x,y,&z);if(z!=-1)l-length+; printlist_hc(l);void listinsert_hc(struct sqlist *l)int i,j;struct stu *newbase;void printlist_hc(struct sqlist *l); if(l-length=l-listsize)newbase=(struct stu*)realloc(l-elem,(l-listsize
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1