- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 8
课 程 总 结(提要)
数据构造和抽象数据类型ADT
定义:一个数学模型以及定义在该模型上的一组操作。
构成一个抽象数据类型的三个要素是:
数据对象、数据关系、根本操作
数据构造(非数值计算程序设计问题中的数学模型)
·逻辑构造 〔描绘数据元素之间的关系〕
线性构造—— 线性表、栈、队列、串、数组、广义表
非线性构造 —— 树和森林、二叉树、图
集合构造 —— 查找表、文件
·存储构造〔逻辑构造在存储器中的映象〕
按“关系〞的表示方法不同而分:
顺序构造—以数据元素在存储器中的一个固定的相对位置来表示“关系〞
链式构造—以指针表示数据元素的“后继〞或“前驱〞
·根本操作(三类)
构造的建立和销毁
查找 —— 引用型操作〔不改变元素间的关系〕
按“关系〞进展检索
按给定值进展检索
遍历——访问构造中的每一个数据元素,且对每个元素只访问一次
修改 —— 加工型操作〔改变元素间的关系〕
插入
删除
更新〔删除+插入〕
二、线性构造
·线性表和有序表
—— 不同存储构造的比拟
顺序表:可以实现随机存取;?(1)
插入和删除时需要挪动元素;?(n)
需要预分配存储空间;
适用于“不常进展修改操作、表中元素相对稳定〞的场合。
链表:只能进展顺序存取;?(n)
插入和删除时只需修改指针; ?(1)
不需要预分配存储空间;
适用于“修改操作频繁、事先无法估计最大表长〞的场合。
—— 应用问题的算法时间复杂度的比拟
例如,以线性表表示集合进展运算的时间复杂度为?(n2),
而以有序表表示集合进展运算的时间复杂度为?(n)
·栈和队列 —— 数据类型的特点及其应用范畴
·串 —— 和线性表的差异:
数据对象不同〔数据元素限定为单个字符〕、根本操作集不同〔串整体作为操作对象〕、存储构造不同
?? 串的形式匹配算法
·数组 —— 只有引用型的操作,∴只需要顺序存储构造
多维到一维的不同映象方法:
以行序为主序〔低下标优先〕
以列序为主序〔高低标优先〕
·广义表 —— 多层次的线性构造
特性:次序性、长度、层次性、深度、递归等
独有的特性:共享
存储构造的特点
三、非线性构造
?? 树和森林、二叉树、图
? 数据类型的定义(构造特点和根本操作)
? 存储构造
? 二叉树的特性及其证明方法
? 遍历
·何谓“遍历〞?对构造中的每个元素都访问到,且只被访问一次
·对非线性构造的遍历需要确定一条搜索途径
·两条搜索途径:深度优先搜索和广度优先搜索
·逻辑定义
深度优先搜索 —— 以构造中的某个数据元素为起始点,首先访问该数据元素,然后依次以它的各个“后继〞为起始点进展“深度优先搜索遍历〞。
其特点为:在访问了起始数据元素之后,沿着某一条“途径〞(后继)向前,直至“到底〞,然后退回一步找另一个后继,再向前继续,……,直至所有通路都走遍。
广度优先搜索 ——以构造中的某个数据元素为起始点,首先访问该数据元素,然后先访问其所有后继;之后其它结点的访问次序由已被访问的结点的访问次序决定:先被访问的结点的后继“优先于〞后被访问的结点的后继。
其特点为:在访问了起始数据元素之后,先访问它的所有后继,然后再依这些后继被访问的先后次序访问它们的后继,……,直至没有后继未被访问为止。
·算法的形式描绘
深度优先搜索 ——通常采用递归的形式
二叉树〔先序、中序、后序〕、树/图〔先根、后根〕
一般形式算法的描绘:
void DFSearch(ADT DS, ElemType v)
{ // 从v开场,对DS进展深度优先搜索遍历
if (DS) {
visit(v); (visited[v]=true;)
w=FirstSucc(v);
while (w) {
if (!visited[v]) DFSearch(DS, w);
w=NextSucc(DS, v, w);
}//while
}//if
}//DFSearch
不同数据构造(逻辑和存储)有不同写法。
例如对森林,起始点只有一个(第一棵树的根),只有两个后继,且各棵树互不相交,按搜索途径上的访问次序有先序遍历和中序遍历之分。
void PreOrder_F(CSTree T) {
// 对以T为根指针的森林进展先序遍历
if (T) {
visit(T-data);
PreOrder_F( T-firstchild ); // 先序遍历第一棵树
您可能关注的文档
最近下载
- 声控灯的安装与调试工作页.doc VIP
- 2024年全国统一高考化学试卷(新课标)(含解析版).docx
- 2024春期国开电大《应用写作(汉语)》形考任务1-6参考答案.doc
- 佳能PowerShot使用手册SX70HS说明书.pdf
- 重大社2024初中信息科技1教材解读-七年级上册第一单元(吴跃进).pptx
- 谦敬辞训练题(答案).doc
- 《等腰三角形的判定》PPT课件.pptx
- 原发性肝癌诊疗指南(2024年版)内科及系统治疗解读.pptx
- 线性多智能体系统的自适应动态事件触发一致性Adaptive Dynamic Event-Triggered Consensus of Linear Multi-Agent Systems-来源:理论数学(第2021011期)-汉斯出版社.pdf VIP
- HG_T 4580-2013 农业用硝酸钙.docx
文档评论(0)