数据结构实验指导书及答案(徐州工程学院)xWord文件下载.docx
《数据结构实验指导书及答案(徐州工程学院)xWord文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构实验指导书及答案(徐州工程学院)xWord文件下载.docx(57页珍藏版)》请在冰豆网上搜索。
2.每个输入前要有输入提示(如:
请输入2个整数当中用空格分割:
),每个输出数据都要求有内容说明(如:
280和100的和是:
380。
)。
3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。
四、实验内容
1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。
2.编写一个输入某个学生10门课程成绩的函数(10门课程成绩放到结构体数组中,结构体包括:
课程编号,课程名称,课程成绩)。
3.编写一个求10门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高成绩,则每个最高成绩均输出。
4.编写一个求10门成绩平均成绩的函数。
5.编写函数求出比平均成绩高的所有课程及成绩。
#include<
stdio.h>
conio.h>
structsubject
{
intsubject_id;
charsubject_name[20];
doublesubject_grades;
};
structsubjectsub[10];
voidinput()
inti;
printf("
pleaseinput:
\n"
);
for(i=0;
i<
10;
i++)
scanf("
%d %s
%lf"
&
sub[i].subject_id,&
sub[i].subject_name,&
sub[i].subject_grades);
}
youjustinput:
3;
%lf\n"
sub[i].subject_id,sub[i].subject_name,sub[i].subject_grades);
voidsubject_max()
inti,flag;
doublemax=sub[0].subject_grades;
if(sub[i].subject_grades>
max)max=sub[i].subject_grades;
flag=i;
The high score of subject is %s
sub[flag].subject_name,max);
voidsubject_average()
doubleaverage,sum=sub[0].subject_grades;
for(i=1;
sum+=sub[i].subject_grades;
average=sum/10;
subject'
saverageis%lf\n"
average);
voidsubjct_gtaverage()
average)
flag=i;
subject greater than average is %s
sub[flag].subject_name,sub[flag].subject_grades);
intmain()
input();
subject_max();
subject_average();
subjct_gtaverage();
return0;
实验二顺序表的基本操作
1.熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。
2.掌握结构体和结构体数组的访问与使用。
3.熟练实现顺序表类型和变量(如下所示)定于、熟悉顺序表的访问原理(顺序存储、随机访问)。
1.掌握顺序表的建立、数据元素的插入和删除、掌握数据元素的访问。
2.能够熟练的使用函数来实现顺序表的各种操作。
1.定义一顺序表类型,并定义顺序表。
2.将教材中顺序表的建立、初始化、插入、删除等函数实现。
3.顺序表能够存储10名学生的基本信息(包括姓名、学号和成绩)。
4.由主函数按照用户要求对各个顺序表操作访问。
5.每次操作之前要有明确的说明,操作后要输出操作结果。
6.分析顺序表的插入、删除、查找的时间和空间复杂度。
1.在自己的U盘的“姓名+学号”文件夹中创建“实验2”文件夹,本次实验的所有程序和数据都要求存储到本文件夹中。
2.完成顺序表操作的如下函数:
建立,初始化,增加,插入,删除。
#include"
stdio.h"
malloc.h"
#include"
string.h"
#defineLIST_INIT_SIZE1
#defineLISTINCREMENT1
structstu
{charname[6];
charnum[3];
intcj;
structsqlist
{structstu*elem;
intlength;
intlistsize;
voidmain()
{structsqlist*initlist_hc();
voidcshlist_hc(structsqlist*l);
voidlistinsert_hc(structsqlist*l);
voidlistdelete_hc(structsqlist*l);
voidlisthb_hc(structsqlist*l1,structsqlist*l2,structsqlist*l3);
structsqlist*l1,*l2,*l3;
charf;
inti,k=0;
请选择对顺序表的操作,操作菜单如下:
80;
i++)printf("
*"
建立顺序表(C)\n"
初始化顺序表(N)\n"
顺序表中插入元素(I)\n"
顺序表中删除元素(D)\n"
合并顺序表(H)\n"
退出系统(E)\n"
for(i=0;
do
{printf("
输入大写字母按Enter确定:
"
flushall();
f=getchar();
if(f=='
C'
)
{if(k==0)l1=initlist_hc();
else{l2=initlist_hc();
}k++;
elseif(f=='
N'
{if(k==1)cshlist_hc(l1);
elsecshlist_hc(l2);
}elseif(f=='
I'
{if(k==1)listinsert_hc(l1);
elselistinsert_hc(l2);
D'
{if(k==1)listdelete_hc(l1);
elselistdelete_hc(l2);
H'
{l3=initlist_hc();
listhb_hc(l1,l2,l3);
}while(f!
='
E'
}
structsqlist*initlist_hc()
{structsqlist*l;
l=(structsqlist*)malloc(sizeof(structsqlist));
if(!
l)printf("
出错!
return(l);
voidcshlist_hc(structsqlist*l)
{structstu*newbase;
voidprintlist_hc(structsqlist*l);
charx[6],y[3];
intz;
l->
elem=(structstu*)malloc(LIST_INIT_SIZE*sizeof(structstu));
if(!
l->
elem)printf("
length=0;
listsize=LIST_INIT_SIZE;
请输入信息以-1结束:
scanf("
%s%s%d"
x,y,&
z);
while(z!
=-1)
{if(l->
length==l->
listsize)
{newbase=(structstu*)realloc(l->
elem,(l->
listsize+LISTINCREMENT)*sizeof(structstu));
newbase)printf("
elem=newbase;
listsize+=LISTINCREMENT;
}strcpy(l->
elem[l->
length].name,x);
strcpy(l->
length].num,y);
l->
length].cj=z;
if(z!
=-1)l->
length++;
}printlist_hc(l);
voidlistinsert_hc(structsqlist*l)
{inti,j;
structstu*newbase;
if(l->
listsize+LISTINCR