实验二 抽象数据类型的表示和实现——及编码答案
t浙江大学城市学院实验报告
课程名称 数据结构基础 实验项目名称 实验二 抽象数据类型的表示和实现 学生姓名 专业班级 学号
实验成绩 指导老师(签名 ) 日期
一. 实验目的和要求
1、通过抽象数据类型三元组的表示和实现,了解抽象数据类型的定义方式。
2、掌握抽象数据类型的定义方式和用C语言实现的方法。
3、熟悉如何运用主函数检验各基本操作函数的正确性的具体操作
二. 实验内容
1、 认真阅读以下有关抽象数据类型的知识:
(1)抽象数据类型的概念
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,就不影响其外部的使用。
一个含抽象数据类型的软件模块通常应包含定义、表示和实现3个部分。抽象数据类型通常采用以下格式定义:
ADT抽象数据类型名 {
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
} ADT抽象数据类型名
(2)三元组的抽象数据类型定义及表示
我们以抽象数据类型三元组为例,说明抽象数据类型是如何定义的。三元组实际上就是一个数据对象中有3个数据元素。三元组中元素的数据类型,可以是整型数,也可以是字符、浮点数或者更复杂的数据类型。
以下是三元组的抽象数据类型定义:
ADT Triplet{
数据对象:D={e1, e2, e3 | e1, e2, e3∈ElemSet (ElemSet为某个数据对象的集合)}
数据关系:R1={<e1, e2>, <e2, e3>}
基本操作:
InitTriplet(&T, v1, v2, v3)
操作结果:构造三元组T,元素e1, e2和e3分别被赋以v1, v2, v3值 DestroyTriplet(&T)
操作结果:三元组T被销毁
Get(T, i, &e)
初始条件:三元组T已存在,1≤i≤3
操作结果:用e返回T的第i元的值
IsAscending(T)
初始条件:三元组T已存在
操作结果:如果T的三个元素按升序排列,则返回1,否则返回0
IsDecending(Triplet T);
初始条件: 三元组T已存在
操作结果: 如果T的三个元素按降序排列,则返回1,否则返回0 Put(&T, i, e)
初始条件:三元组T已存在,1≤i≤3
操作结果:改变T的第i元的值为e
Max(T, &e)
初始条件:三元组T已存在
操作结果:用e返回T的三个元素中的最大值
Min(T, &e)
初始条件:三元组T已存在
操作结果:用e返回T的三个元素中的最小值
} ADT Triplet
三元组在计算机中的具体存储方式可以采用动态分配的顺序存储结构,如图
2.1所示。
TripletElemType
图2.1 动态分配的顺序存储的三元组
2、 在计算机中实现上述三元组抽象数据类型。步骤如下:
(1)首先搭好实现该抽象数据类型的整个C语言程序的模块框架结构图,如图
2.2所示。即在一个工程中分别建立两个文件:头文件test2_function.h与源文件test2_main.cpp。
图2.2 实现三元组操作的C语言源程序框架图
(2)编写test2_function.h和test2_main.cpp两个文件,其中test2_function.h中包含三元组的各种操作函数的实现,test2_main.cpp中包含三元组存储结构定义与主函数,主函数主要用于验证test2_function.h中各函数的正确性。编译并调试程序,直到正确运行。
说明:
以下给出了若干基本操作(即函数)的实现方法,供参考,其余函数请自行完成。
(a) 头文件test2_function.h中三元组基本操作的实现个例。
I. 初始化操作:
int InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3)
{ // 操作结果:构造三元组T,依次置T的3个元素的初值为v1,v2和v3
// (见图2.3) ,经过此操作,系统将分配给三元组T一个起始地址
if (!(T=(ElemType *) malloc (3*sizeof(ElemType))))
exit(0); // 申请空间失败,退出系统
T[0]=v1; T[1]=v2; T[2]=v3;
return 1; // 若返回值为1,则初始化成功
}
TT[0]
T[1]T[2] 图2.3 构造三元组T
II. 销毁操作:
void DestroyTriplet(Triplet &T)
{ // 操作结果:三元组T被销毁
free(T);
T=NULL;
return;
}
(b) 主文件test2_main.cpp:
# include <iostream.h> // 包含输入(cin)、输出(cout)的头文件, #include <stdio.h> //若采用printf和scanf,则用stdio.h库函数 # include <stdlib.h> //常用函数的头文件
typedef int ElemType; // 定义三元组元素类型ElemType为整型 typedef ElemType *Triplet; //定义动态分配的三元组类型, 指针Triplet
//指向ElemType类型元素的地址。初始化操作分配3个元素的存储空间 # include "test2_function.h" // 包含三元组基本操作的头文件
void main()
{
Triplet T; // ___定义整型指针T _____
ElemType m;
int i;
i=InitTriplet(T, 1, 3, 5); //__以v1, v2, v3值____
printf("调用初始化函数后,i=%d (1:成功;否则:不成功) ", i); printf("\n三元组中三个元素的值分别为:\n");
printf("T[0]=%d, T[1]=%d, T[2]=%d", T[0], T[1], T[2]);
Get(T, 2, m); // ___ printf("\nT的第2个值为:%d", m) ;
Put(T, 2, 6); // ___ printf("\n改变后T的3个值为:%d, %d, %d", T[0], T[1], T[2]) ;
Max(T, m); // ___ printf("\nT中的最大值为:%d", m) ;
Min(T, m); //____用e返回T的三个元素中的最小值______ printf("\nT中的最小值为:%d", m);
..................
DestroyTriplet(T); printf("\n销毁T后,T=%d\n", T);
}
请读懂这个主程序,并把主函数填写完整,体会main() 函数前的“文件包含 (include) ”处理和typedef类型定义作用,并在主函数的划线处填上相应C语句的注释。
3、填写实验报告,实验报告文件取名为report2.doc。
4、上传实验报告文件report2.doc 、源程序文件test2_main.cpp及
test2_function.h到Ftp服务器上( )自己的文件夹下。
三. 函数的功能说明及算法思路
(包括每个函数的功能说明,及一些重要函数的算法实现思路)
附属文件test2_function.h:
InitTriplet(&T, v1, v2, v3)
操作结果:构造三元组T,元素e1, e2和e3分别被赋以v1, v2, v3值 DestroyTriplet(&T)
操作结果:三元组T被销毁
Get(T, i, &e)
初始条件:三元组T已存在,1≤i≤3
操作结果:用e返回T的第i元的值
IsAscending(T)
初始条件:三元组T已存在
操作结果:如果T的三个元素按升序排列,则返回1,否则返回0
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




