数据结构基础之抽象数据类型的表示与实现
作者:本站整理 时间:2015-06-01
抽象数据类型是指一个数学模型以及定义在此数学模型上的一组操作,需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。
一、抽象数据类型定义(ADT)
作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。
定义:一个数学模型以及定义在该模型上的一组操作。
关键:使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如何存储。
例:线性表这样的抽象数据类型,其数学模型是:数据元素的集合,该集合内的元素有这样的关系:除第一个和最后一个外,每个元素有唯一的前趋和唯一的后继。可以有这样一些操作:插入一个元素、删除一个元素等。
抽象数据类型分类 |
|
原子类型 |
值不可分解,如int |
固定聚合类型 |
值由确定数目的成分按某种结构组成,如复数 |
可变聚合类型 |
值的成分数目不确定如学生基本情况 |
抽象数据类型表示法:
一、
三元组表示:(D,S,P)
其中D是数据对象,S是D上的关系集,P是对D的基本操作集。
二、书中的定义格式:
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名
例:线性表的表示
名称 |
线性表 |
|
数据对象 |
D={ai| ai(-ElemSet,i=1,2,...,n,n>=0} |
任意数据元素的集合 |
数据关系 |
R1={<ai-1,ai>| ai-1,ai(- D,i=2,...,n} |
除第一个和最后一个外,每个元素有唯一的直接前趋和唯一的直接后继 |
基本操作 |
ListInsert(&L,i,e) |
L为线性表,i为位置,e为数据元素。 |
ListDelete(&L,i,e) |
||
... |
二、类C语言语法
类C语言语法示例 |
|
||
1、预定义常量和类型 |
#define TRUE 1 |
|
|
2、数据结构的存储结构 |
typedef ElemType first; |
|
|
3、基本操作的算法 |
函数类型 函数名(函数参数表){ |
|
|
4、赋值语句 |
简单赋值: |
变量名=表达式; |
|
串联赋值: |
变量名1=变量名2=...=变量名k=表达式; |
|
|
|
|||
成组赋值: |
(变量名1,...,变量名k)=(表达式1,...,表达式k); |
|
|
交换赋值: |
变量名<-->变量名; |
|
|
条件赋值: |
变量名=条件表达式?表达式?表达式T:表达式F |
|
|
5、选择语句 |
1、if(表达式) 语句; |
|
|
6、循环语句 |
for(赋初值表达式;条件;修改表达式序列)语句; |
|
|
7、结束语句 |
return [表达式]; |
|
|
8、输入和输出语句 |
scanf([格式串],变量1,...,变量n); |
|
|
9、注释 |
//文字序列 |
|
|
10、基本函数 |
max(表达式1,...,表达式n) |
|
|
11、逻辑运算 |
&&与运算;||或运算 |
|
例:线性表的实现:
ADT List{
数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0}
数据关系: R1={<ai-1,ai>| ai-1,ai(- D,i=2,...,n}
基本操作:
InitList(&L)
DestroyList(&L)
ListInsert(&L,i,e)
ListDelete(&L,i,&e)
}ADT List
ListInsert(List &L,int i,ElemType e)
{if(i<1||i>L.length+) return ERROR;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p;
*q=e;
++L.length;
return OK;
}
下面是C语言编译通过的示例:
#define ERROR 0 |
E:\ZM\Zmdoc\datastru\class02>listdemo |
三、总结
抽象数据类型定义;
抽象数据类型实现方法:一、类C语言实现 二、C语言实现
相关文章
相关推荐
-
PhotoZoom Pro V6.0.4.0简体中文官方版(图片无损放大工具)
-
ClockGen正式版 V1.01
-
PDF-Tools 4.0.313(PDF编辑器)
-
VeraCrypt V1.14官方中文版(磁盘加密工具)
-
真人美女试衣换衣软件绿色版 v9.5
-
迅雷影音去广告版 v5.1.30.4606
-
线刷宝官方版 v1.5.0.15002
-
Hippo Animator 4.3.5560(动画制作软件)
-
Calibre (x64) 2.31.0(电子图书馆)
-
爱思助手官方版
-
PHPMaker英文特别版 v2017.0.7
-
囧囧熊之熊孩子系列表情包
-
Windows7 32位/64位旗舰版
-
百分浏览器电脑版 v2.6.5.52
-
AVPlayer V2.60 苹果版
-
招商银行专业版官方版