- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构
An Introduction to Data Structure
第一章 绪论;第一章 绪论;1.1 什么是数据结构;;从上面例子中我们可以看出:
数据的逻辑结构:即表中各条记录之间的逻辑关系。
数据的存储结构:即表中各条记录以及他们之间的逻辑关系在计算机中的表示。(如父子关系)
数据的操作:即对上述表中的记录进行的运算的集合。在本例中的基本运算为检索(查找),可以根据登录号查找一本书(表一),根据书名(表二)、作者名(表三)、分类号(表四)查找一本书,插入(来新书)和删除(书报废)。;例2 人机对奕问题;从上面例子中我们可以看出:
数据的逻辑结构:即各个格局之间的逻辑关系。
数据的存储结构:即表各个格局以及他们之间的逻辑关系在计算机中的表示。(如父子关系)
数据的操作:即对上述各个格局进行的运算的集合。在本例中的基本运算树的深度,树中叶子结点的个数等。;例三 多叉路口交通灯管理问题
(此页有备注页);从上面例子中我们可以看出:
数据的逻辑结构:即图中各个顶点以及他们之间的逻辑关系(用边表示)。
数据的存储结构:即图中各个顶点以及他们之间的逻辑关系在计算机中的表示。
数据的操作:即对上述各个顶点进行的运算的集合。在本例中的基本运算:图的遍历,求取图中结点的个数等。;数据结构定义: 是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科。;
数据(data)—所有能输入到计算机中去的描述客观事物的符号。
数据元素(data element)—数据的基本单位,也称结点(node)或记录(record)。如例1中的一条记录,例2中的格局,例3中的顶点(圆圈)。
数据项(data item)—有独立含义的数据最小单位,也称域(field)。一个数据元素有时可由若干个数据项组成。如:例1中一条记录(数据元素)可以包含若干数据项(书名、作者名、分类号等)。;根据数据元素间关系的基本特性,有四种基本数据结构:
(集合)——数据元素间除“同属于一个集合”外,无其它关系
线性结构——一个对一个,如线性表、栈、队列、串、数组
树形结构——一个对多个,如树
图状结构——多个对多个,如图;数据的逻辑结构—只抽象反映数据元素的逻辑关系
数据的存储(物理)结构—数据的逻辑结构在计算机存储器中的实现;元素n;1536;;数据类型—高级语言中指数据的取值范围及其上可进行的操作的总称;抽象数据类型的具体描述:
;ADT抽象数据类型名{
数据对象:〈数据对象的定义〉
数据关系:〈数据关系的定义〉
基本操作:〈基本操作的定义〉
}ADT抽象数据类型名
其中,数据对象和数据关系的定义用伪码描述,基本操作的定义格式为:
基本操作名(参数表)
初始条件: 〈初始条件描述〉
操作结果: 〈操作结果描述〉
其中,基本操作有两种参数:赋值参数只为操作提供输入值;引用参数以打头,除可提供输入值外,还将返回操作的结果。
“初始条件”描述了操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应的出错信息。
“操作结果”说明了操作正常完成之后,数据结构的变化状况和应返回的结果。若初始条件为空,则省略之。;举例:抽象数据类型三元组的定义: (教材P9)
ADT Triplet{
数据对象:D={e1,e2,e3|e1,e2,e3∈ElemSet(定义了关系运算的某个集合)}
数据关系:R1={e1,e2,e2,e3}
基本操作:
InitTriplet(T,v1,v2,v3)
操作结果:构造了三元组T,元素e1,e2和e3分别被赋以参数v1,v2和v3的值。
DestroyTriplet(T)
操作结果:三元组T被销毁。
;ADT Triplet{
基本操作:
Get(T,i,e)
初始条件:三元组T已存在,1≤i ≤ 3。
操作结果:用e返回T的第i元的值。
Put(T,i, e)
初始条件:三元组T已存在,1≤i ≤ 3。
操作结果:改变T的第i元的值为e。
Max(T,e)
初始条件:三元组T已存在。
操作结果:用e返回T的3个元素中的最大值。
}ADT Triplet
;本书采用的语言为伪码(自然语言)和C语言之间的类C语言作为描述工具,有时也用伪码描述一些只含抽象操作的抽象算法。
好处:使得数据结构与算法的描述和讨论简明清晰,不拘泥于C语言的细节,又能容易 转换成C或者C++程序。
具体语言实现细节参见教材10-13页。
;补充知识---引用;补充知识---引用;补充知识---引用;补充知识---引用;补充知识---引用;补充知识---引用;补充知识---引用;#include iostream.h
void swap(long x,long y)
{ long j;
? j=x;
?
原创力文档


文档评论(0)