《数据结构实验》实验指导书及答案
信电工程学院 计算机科学和技术教研室 编
2011.12
数据结构实验所有代码整理
作者 郑涛
声明:在这里我整理了数据结构实验的所有代码,希望能对大家的数据结构实验的考试有所帮助,大家可以有选择地浏览,特别针对一些重点知识需要加强记忆(ps:重点知识最好让孙天凯给出),希望大家能够在数据结构实验的考试中取得令人满意的成绩,如果有做
的不好的地方请大家谅解并欢迎予以指正。
实验一 熟悉编程环境
实验预备知识:
1.熟悉本课程的语言编译环境(TC或VC),能够用C语言编写完整的程序,并能够发现和改正错误。
2.能够灵活的编写C程序,并能够熟练输入C程序。
一、实验目的
1.熟悉C语言编译环境,掌握C程序的编写、编译、运行和调试过程。 2.能够熟练的将C程序存储到指定位置。
二、实验环境
⒈ 硬件:每个学生需配备计算机一台。 ⒉ 软件:Windows操作系统+Turbo C;
三、实验要求
1.将实验中每个功能用一个函数实现。
2.每个输入前要有输入提示(如:请输入2个整数当中用空格分割:),每个输出数据都要求有内容说明(如:280和100的和是:380。)。
3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。
四、实验内容
1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。
2.编写一个输入某个学生10门课程成绩的函数(10门课程成绩放到结构体数组中,结构体包括:课程编号,课程名称,课程成绩)。
3.编写一个求10门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高成绩,则每个最高成绩均输出。
4.编写一个求10门成绩平均成绩的函数。
5.编写函数求出比平均成绩高的所有课程及成绩。 #include
struct subject {
int subject_id;
char subject_name[20]; double subject_grades; };
struct subject sub[10];
void input() {
int i;
printf(\ for(i=0;i<10;i++) {
scanf(\rades);
}
printf(\ for(i=0;i<3;i++) {
printf(\rades);
} }
void subject_max() {
int i,flag;
double max=sub[0].subject_grades; for(i=0;i<10;i++) {
if(sub[i].subject_grades>max) max=sub[i].subject_grades; flag=i; }
printf(\high score of is %s %lf\\n\
}
void subject_average() {
int i;
double average,sum=sub[0].subject_grades; for(i=1;i<10;i++) {
sum+=sub[i].subject_grades; }
average=sum/10;
printf(\}
void subjct_gtaverage() {
int i,flag;
double average,sum=sub[0].subject_grades; for(i=1;i<10;i++) {
sum+=sub[i].subject_grades; }
average=sum/10; for(i=0;i<10;i++) {
if(sub[i].subject_grades>average) {
flag=i;
printf(\greater than is %s %lf\\n\
} } }
int main()
subject
average
{
input();
subject_max(); subject_average(); subjct_gtaverage(); return 0; }
实验二 顺序表的基本操作
实验预备知识:
1.熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。 2.掌握结构体和结构体数组的访问与使用。
3.熟练实现顺序表类型和变量(如下所示)定于、熟悉顺序表的访问原理(顺序存储、随机访问)。
一、实验目的
1.掌握顺序表的建立、数据元素的插入和删除、掌握数据元素的访问。
2.能够熟练的使用函数来实现顺序表的各种操作。
二、实验环境
⒈ 硬件:每个学生需配备计算机一台。 ⒉ 软件:Windows操作系统+Turbo C;
三、实验要求
1.定义一顺序表类型,并定义顺序表。
2.将教材中顺序表的建立、初始化、插入、删除等函数实现。 3.顺序表能够存储10名学生的基本信息(包括姓名、学号和成绩)。
4.由主函数按照用户要求对各个顺序表操作访问。
5.每次操作之前要有明确的说明,操作后要输出操作结果。 6.分析顺序表的插入、删除、查找的时间和空间复杂度。
四、实验内容
1.在自己的U盘的“姓名+学号”文件夹中创建“实验2”文件夹,本次实验的所有程序和数据都要求存储到本文件夹中。
2.完成顺序表操作的如下函数:建立,初始化,增加,插入,删除。
#include \#include \#include \
#define LIST_INIT_SIZE 1 #define LISTINCREMENT 1
struct stu
{char name[6]; char num[3]; int cj;};
struct sqlist
{struct 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 sqlist *l2,struct sqlist *l3); struct sqlist *l1,*l2,*l3; char f;int i, k=0;
printf(\请选择对顺序表的操作,操作菜单如下:\\n\for(i=0;i<80;i++)printf(\printf(\建立顺序表(C)\\n\printf(\初始化顺序表(N)\\n\printf(\顺序表中插入元素(I)\\n\printf(\顺序表中删除元素(D)\\n\printf(\合并顺序表(H)\\n\printf(\退出系统(E)\\n\for(i=0;i<80;i++)printf(\do
{printf(\输入大写字母按Enter确定:\