数据结构实验指导书.docx
- 文档编号:2206550
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:73
- 大小:435.11KB
数据结构实验指导书.docx
《数据结构实验指导书.docx》由会员分享,可在线阅读,更多相关《数据结构实验指导书.docx(73页珍藏版)》请在冰豆网上搜索。
数据结构实验指导书
《数据结构》实验指导书
信息与计算科学专业教研室
2016年3月
目录
实验一熟悉编程环境1
一、实验目的1
二、实验环境1
三、实验要求1
四、实验内容1
实验二顺序表的基本操作3
一、实验目的4
二、实验环境4
三、实验要求4
四、实验内容4
实验三单链表的基本操作8
一、实验目的8
二、实验环境8
三、实验要求8
四、实验内容8
实验四栈的基本操作11
一、实验目的12
二、实验环境12
三、实验要求12
四、实验内容12
实验五队列的基本操作16
一、实验目的16
二、实验环境16
三、实验要求17
四、实验内容17
实验六二叉树建立及遍历操作19
一、实验目的19
二、实验环境19
三、实验要求19
四、实验内容19
实验七二叉树的应用程序设计21
一、实验目的21
二、实验环境21
三、实验要求21
四、实验内容22
五、报告要求22
实验八图的建立及遍历操作25
一、实验目的25
二、实验环境25
三、实验要求25
四、实验内容25
实验九图的最小生成树算法的实现30
一、实验目的30
二、实验环境30
三、实验要求30
四、实验内容30
实验十图的最短路径算法的实现33
一、实验目的33
二、实验环境33
三、实验要求33
四、实验内容33
实验十一顺序表查找算法的实现37
一、实验目的37
二、实验环境37
三、实验要求37
四、实验内容38
实验十二有序表查找算法的实现41
一、实验目的41
二、实验环境41
三、实验要求41
四、实验内容42
实验十三二叉排序树的查找算法实现44
一、实验目的45
二、实验环境45
三、实验要求45
四、实验内容45
实验十四插入排序算法的实现48
一、实验目的48
二、实验环境48
三、实验要求48
四、实验内容48
实验十五交换排序算法的实现52
一、实验目的52
二、实验环境52
三、实验要求52
四、实验内容53
实验一熟悉编程环境
实验预备知识:
1.熟悉本课程的语言编译环境(TC或VC),能够用C语言编写完整的程序,并能够发现和改正错误。
2.能够灵活的编写C程序,并能够熟练输入C程序。
一、实验目的
1.熟悉C语言编译环境,掌握C程序的编写、编译、运行和调试过程。
2.能够熟练的将C程序存储到指定位置。
二、实验环境
⒈硬件:
每个学生需配备计算机一台。
⒉软件:
Windows操作系统+TurboC;
三、实验要求
1.将实验中每个功能用一个函数实现。
2.每个输入前要有输入提示(如:
请输入2个整数当中用空格分割:
),每个输出数据都要求有内容说明(如:
280和100的和是:
380。
)。
3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。
四、实验内容
1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。
2.编写一个输入某个学生10门课程成绩的函数(10门课程成绩放到结构体数组中,结构体包括:
课程编号,课程名称,课程成绩)。
3.编写一个求10门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高成绩,则每个最高成绩均输出。
4.编写一个求10门成绩平均成绩的函数。
5.编写函数求出比平均成绩高的所有课程及成绩。
#include
#include
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);
}
printf("youjustinput:
\n");
for(i=0;i<3;i++)
{
printf("%d%s%lf\n",sub[i].subject_id,sub[i].subject_name,sub[i].subject_grades);
}
}
voidsubject_max()
{
inti,flag;
doublemax=sub[0].subject_grades;
for(i=0;i<10;i++)
{
if(sub[i].subject_grades>max)
max=sub[i].subject_grades;
flag=i;
}
printf("Thehighscoreofsubjectis%s%lf\n",sub[flag].subject_name,max);
}
voidsubject_average()
{
inti;
doubleaverage,sum=sub[0].subject_grades;
for(i=1;i<10;i++)
{
sum+=sub[i].subject_grades;
}
average=sum/10;
printf("subject'saverageis%lf\n",average);
}
voidsubjct_gtaverage()
{
inti,flag;
doubleaverage,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("subjectgreaterthanaverageis%s%lf\n",sub[flag].subject_name,sub[flag].subject_grades);
}
}
}
intmain()
{
input();
subject_max();
subject_average();
subjct_gtaverage();
return0;
}
实验二顺序表的基本操作
实验预备知识:
1.熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。
2.掌握结构体和结构体数组的访问与使用。
3.熟练实现顺序表类型和变量(如下所示)定于、熟悉顺序表的访问原理(顺序存储、随机访问)。
一、实验目的
1.掌握顺序表的建立、数据元素的插入和删除、掌握数据元素的访问。
2.能够熟练的使用函数来实现顺序表的各种操作。
二、实验环境
⒈硬件:
每个学生需配备计算机一台。
⒉软件:
Windows操作系统+TurboC;
三、实验要求
1.定义一顺序表类型,并定义顺序表。
2.将教材中顺序表的建立、初始化、插入、删除等函数实现。
3.顺序表能够存储10名学生的基本信息(包括姓名、学号和成绩)。
4.由主函数按照用户要求对各个顺序表操作访问。
5.每次操作之前要有明确的说明,操作后要输出操作结果。
6.分析顺序表的插入、删除、查找的时间和空间复杂度。
四、实验内容
1.在自己的U盘的“姓名+学号”文件夹中创建“实验2”文件夹,本次实验的所有程序和数据都要求存储到本文件夹中。
2.完成顺序表操作的如下函数:
建立,初始化,增加,插入,删除。
#include"stdio.h"
#include"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;
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确定:
");
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);}
elseif(f=='D')
{if(k==1)listdelete_hc(l1);elselistdelete_hc(l2);}
elseif(f=='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("出错!
\n");
return(l);}
voidcshlist_hc(structsqlist*l)
{structstu*newbase;
voidprintlist_hc(structsqlist*l);
charx[6],y[3];intz;
l->elem=(structstu*)malloc(LIST_INIT_SIZ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 指导书