数据结构实验报告册.docx
- 文档编号:6672639
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:84
- 大小:40.80KB
数据结构实验报告册.docx
《数据结构实验报告册.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告册.docx(84页珍藏版)》请在冰豆网上搜索。
数据结构实验报告册
四川师范大学计算机学院
实验报告册
院系名称:
计算机科学学院
课程名称:
数据结构
实验学期2013年至2014年第一学期
专业班级:
2012级4班软件工程
姓名:
张勇学号:
2012110457
指导教师:
廖雪花
实验最终成绩:
实验报告须知
1.学生填写实验报告应按规范填写,填写格式见由任课老师给出的实验报告样本;
2.学生应填写的内容包括:
封面相关栏目、第一页中‘本学期(年)开设实验课程情况一览表’中的实验名称、学时数;每次报告中的实验性质、同组人姓名、实验日期、以及实验报告中的一至五项;
3.教师填写内容为:
实验评价、每次报告成绩、第一页中‘本学期(年)开设实验课程情况一览表’中成绩、及封面的实验最终成绩;
4.学生实验结束后,教师应对学生实验结果进行核实,学生方可离开实验室。
5、实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格。
6.本实验册应妥善保管,本课程实验结束后应交回实验室。
本学期(年)开设实验课程情况一览表
序号
实验名称
(学生实验后填写)
学时数
成绩
(分数或等级)
1
抽象数据类型的表示与实现
2
线性表实验
3
栈和队列实验
4
稀疏矩阵实验
5
树和二叉树实验
6
图及其应用实验
7
查找和排序实验
8
9
10
11
12
13
14
15
16
17
18
19
20
实验报告
(1)
实验名称
抽象数据类型的表示与实现
同组人姓名
张勇
实验性质
□基本操作□验证性
■综合性□设计性
实验日期
8月30日
实验成绩
教师评价:
实验预习□实验操作□实验结果□实验报告□其它□
教师签名:
一、实验目的及要求
1)熟悉类C语言的描述方法,学会将类C语言描述的算法转换为C源程序实现;
2)理解抽象数据类型的定义,编写完整的程序实现一个抽象数据类型(如三元组)。
3)认真阅读和掌握本实验的参考程序,上机运行程序,保存和打印出程序的运行结果,并结合程序进行分析。
二、实验内容
1)编程实现抽象数据类型三元组的定义、存储、基本操作(最大值、最小值、平均值等的求解),并设计一个主菜单完成各个功能的调用。
三、主要设备及软件
PC机1台,VC6.0平台
4、实验流程、操作步骤或核心代码、算法片段
说明:
这个实验的代码全部写到一个CPP文件中的
#include
#include
usingnamespacestd;
#defineTURE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
typedefintStatus;
typedefintElemType;
typedefElemType*Triplet;
StatusInitTriplet(Triplet&T,ElemTypev1,ElemTypev2,ElemTypev3)
{
T=(ElemType*)malloc(3*sizeof(ElemType));
if(!
T)
exit(OVERFLOW);
T[0]=v1;
T[1]=v2;
T[2]=v3;
returnOK;
}
StatusDestroyTriplet(Triplet&T)
{
free(T);
T=NULL;
returnOK;
}
StatusGet(TripletT,inti,ElemType&e)
{
if(i<1||i>3)
returnERROR;
e=T[i-1];
returnOK;
}
StatusPut(Triplet&T,inti,ElemTypee)
{
if(i<1||i>3)
returnERROR;
T[i-1]=e;
returnOK;
}
StatusIsAscending(TripletT)
{
if((T[0] return1; else return0; } StatusIsDescending(TripletT) { if((T[0]>T[1])||(T[1]>T[2])) return1; else return0; } StatusMax(TripletT,ElemType&e) { if(T[0]>=T[1]) { if(T[0]>=T[2]) e=T[0]; else e=T[2]; } elseif(T[1]>=T[2]) e=T[1]; else e=T[2]; returnOK; } StatusMin(TripletT,ElemType&e) { if(T[0]<=T[1]) { if(T[0]<=T[2]) e=T[0]; else e=T[2]; } elseif(T[1]<=T[2]) e=T[1]; else e=T[2]; returnOK; } intSelect(Triplet&T) { intoption; inti; ElemTypee; cout<<""< cout<<"1.销毁三元组"< cout<<"2.查找元素"< cout<<"3.改变元素"< cout<<"4.判断是否升序排列"< cout<<"5.判断是否降序排列"< cout<<"6.显示最大值"< cout<<"7.显示最小值"< cout<<"8.安全退出"< cout<<""< cout<<"请输入选项: "; cin>>option; switch(option) { case1: DestroyTriplet(T); break; case2: cout<<"需要显示第几个数的值: "; cin>>i; Get(T,i,e); cout<<"第"< break; case3: cout<<"你要改变第几个数的值: "; cin>>i; cout<<"你需要将第"< "; cin>>e; Put(T,i,e); break; case4: if(IsAscending(T)==1) cout<<"该三元组为升序排列."< else cout<<"该三元组不是升序排列."< break; case5: if(IsDescending(T)==1) cout<<"该三元组为降序排列."< else cout<<"该三元组不是降序排列."< break; case6: Max(T,e); cout<<"最大值为"< break; case7: Min(T,e); cout<<"最小值为"< break; case8: exit(0); default: cout<<"输入的选项有误,请重新输入."< break; } getchar(); getchar(); system("cls"); returnSelect(T); } intmain() { TripletT; intv1,v2,v3; cout<<"请输入三个数建立三元组: "; cin>>v1>>v2>>v3; system("cls"); InitTriplet(T,v1,v2,v3); Select(T); return0; } 五、实验结果的分析与评价 这个实验让我第一次接触到了抽象数据类型,感觉十分震撼,学到了很多。 实验报告 (2) 实验名称 线性表实验 同组人姓名 张勇 实验性质 □基本操作□验证性 ■综合性□设计性 实验日期 8月30日 实验成绩 教师评价: 实验预习□实验操作□实验结果□实验报告□其它□ 教师签名: 一、实验目的及要求 1)熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现; 2)以线性表的各种操作(建立、插入、删除等)的实现为重点; 3)通过本次实习帮助学生加深对高级语言C语言的使用(特别是函数参数、指针类型、链表的使用)。 2)认真阅读和掌握本实验的参考程序,上机运行本程序,保存和打印出程序的运行结果,并结合程序进行分析。 按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果。 2、实验内容 1)编程实现线性表两种存储结构中的基本操作的实现(线性表的创建、插入、删除和查找),并设计一个主菜单完成各个功能的调用。 三、主要设备及软件 PC机1台,VC6.0平台 四、实验流程、操作步骤或核心代码、算法片段 //////////////////////////declar.h///////////////////////////////////////////// #ifndefABC_D #defineABC_D #defineTRUE1 #defineFALSE0 #defineOK1 #defineERROR0 #defineINFEASIBLE-1 #defineOVERFLOW-2 #defineLIST_INIT_SIZE100 #defineLISTINCREMENT10 typedefintElemType; typedefintStatus; typedefstruct { ElemType*elem; intlength; intlistsize; }SqList; staticStatusInitList(SqList&L); staticStatusDestroyList(SqList&L); staticStatusClearList(SqList&L); staticStatusListEmpty(SqListL); staticStatusListLength(SqListL); staticStatusGetElem(SqListL,ElemTypei,ElemType&e); //StatusLocateElem(SqListL,ElemTypee,compare()); staticStatusPriorElem(SqListL,ElemTypecur_e,ElemType&pre_e); staticStatusNextElem(SqListL,ElemTypecur_e,ElemType&next_e); staticStatusListInsert(SqList&L,ElemTypei,ElemTypee); staticStatusListDelete(SqList&L,ElemTypei,ElemType&e); //StatusListTraverse(SqListL,visit()) #endif ///////////////////////////////////function.cpp////////////////////////////// #include"declar.h" #include #include #include usingnamespacestd; staticintoption; staticElemTypei,e; staticElemTypecur_e,pre_e,next_e; staticSqListL; StatusInitList(SqList&L) { L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(! L.elem) exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; returnOK; } StatusDestroyList(SqList&L) { if(! L.elem)exit(OVERFLOW); free(L.elem); L.length=L.listsize=0; returnOK; } StatusClearList(SqList&L) { if(! L.elem)exit(OVERFLOW); L.length=0; returnOK; } StatusListEmpty(SqListL) { if(! L.elem)exit(OVERFLOW); if(L.length==0) returnTRUE; else returnFALSE; } StatusListLength(SqListL) { if(! L.elem)exit(OVERFLOW); returnL.length; } StatusGetElem(SqListL,ElemTypei,ElemType&e) { if(! L.elem)exit(OVERFLOW); if((i<1)||(i>L.length)) returnERROR; e=L.elem[i-1]; returnOK; } /*StatusLocateElem(SqListL,ElemTypee,compare()) { }*/ StatusPriorElem(SqListL,ElemTypecur_e,ElemType&pre_e) { if(! L.elem)exit(OVERFLOW); for(intix=1;ix { if(cur_e==L.elem[ix]) { pre_e=L.elem[ix-1]; returnOK; } } returnFALSE; } StatusNextElem(SqListL,ElemTypecur_e,ElemType&next_e) { if(! L.elem)exit(OVERFLOW); for(intix=0;ix { if(cur_e==L.elem[ix]) { next_e=L.elem[ix+1]; returnOK; } } returnFALSE; } StatusListInsert(SqList&L,ElemTypei,ElemTypee) { if(! L.elem)exit(OVERFLOW); if((i<1)||(i>L.length+1)) returnERROR; if(L.length>=L.listsize) { ElemType*newbase; newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(! newbase) exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREMENT; } for(intix=L.length+1;ix>i;--i) { L.elem[ix]=L.elem[ix-1]; } L.elem[i]=e; ++L.length; returnOK; } StatusListDelete(SqList&L,ElemTypei,ElemType&e) { if(! L.elem)exit(OVERFLOW); if((i<0)||(i>L.length)) returnERROR; e=L.elem[i-1]; for(intix=i-1;ix { L.elem[ix]=L.elem[ix+1]; } --L.length; returnOK; } staticintInterface() { cout<<"╔══╦═════════════════════════╦══╗"< cout<<"║║线性表║║"< cout<<"╠══╩═════════════════════════╩══╣"< cout<<"║║"< cout<<"║0.建立线性表║"< cout<<"║1.销毁线性表║"< cout<<"║2.将线性表置空║"< cout<<"║3.判断线性表是否为空║"< cout<<"║4.查找制定位置元素的值║"< cout<<"║pare判定线性表║"< cout<<"║6.查找输入数据的前驱║"< cout<<"║7.查找输入数据的后继║"< cout<<"║8.指定位置插入数据元素║"< cout<<"║9.制定位置删除数据元素║"< cout<<"║10.visit判定线性表║"< cout<<"║11.安全退出程序║"< cout<<"║║"< cout<<"╚═══════════════════════════════╝"< cout<<"请输入你的选项: "; returnOK; } staticintOptionMenu() { Interface(); cin>>option; if(option=0) { InitList(L); } switch(option) { case1: DestroyList(L); break; case2: ClearList(L); break; case3: ListEmpty(L); break; case4: cout<<"你需要查找第几个数据: "; cin>>i; GetElem(L,i,e); cout<<"第"< "< case5: case6: cout<<"请输入数据: "; cin>>cur_e; PriorElem(L,cur_e,pre_e); cout< "< break; case7: cout<<"请输入数据: "; cin>>cur_e; NextElem(L,cur_e,next_e); cout< "< break; case8: cout<<"请输入你要插入数据的位置: "; cin>>i; cout<<"请输入你要插入数据的值: "; cin>>e; if(ListInsert(L,i,e)==OK) cout<<"插入数据元素成功! "< cout<<"按回车键返回."; break; case9: cout<<"请输入你要删除数据的位置: "; cin>>i; if(ListDelete(L,i,e)==OK) cout<<"已经将"< "< cout<<"按回车键返回."; break; case10: ; } getchar(); system("cls"); returnOptionMenu(); } ///////////////////////////////////////////the_main.cpp/////////////////////////////////////////// #include"function.cpp" intmain() { OptionMenu(); return0; } 五、实验结果的分析与评价 实验报告(3) 实验名称 抽象数据类型的表示与实现 同组人姓名 栈、队列实验 实验性质 □基本操作□验证性 ■综合性□设计性 实验日期 8月30日 实验成绩 教师评价: 实验预习□实验操作□实验结果□实验报告□其它□ 教师签名: 一、实验目的及要求 1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。 2)本实验训练的要点是“栈”和“队列”的观点; 二、实验内容 1)利用栈,实现任一个表达式中的语法检查(如括号的匹配)。 2)编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列); 三、主要设备及软件 PC机1台,VC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告