- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[专升本数据结构课程总结
课 程 总 结(提要)
数据结构和抽象数据类型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 ); // 先序遍历第一棵树的子树森林
原创力文档


文档评论(0)