- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一章 概论
1.数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、存储结构和运算
2.数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系
可以用一组数据(结点集合K)以及这些数据之间的 一组二元关系(关系集合R)来表示:(K, R)
结点集K是由有限个结点组成的集合,每一个结点代表一个数据或一组有明确结构的数据
关系集R是定义在集合K上的一组关系,其中每个关系r(r∈R)都是K×K上的二元关系
3.数据类型
a.基本数据类型
整数类型(integer)、实数类型(real)、布尔类型(boolean)、字符类型(char)、指针类型(pointer) b.复合数据类型
复合类型是由基本数据类型组合而成的数据类型;复合数据类型本身,又可参与定义结构更为复杂的结点类型
4.数据结构的分类:线性结构(一对一)、树型结构(一对多)、图结构(多对多)
5.四种基本存储映射方法:顺序、链接、索引、散列
6.算法的特性:通用性、有效性、确定性、有穷性
7.算法分析:目的是从解决同一个问题的不同算法中选择比较适合的一种,或者对原始算法进行改造、加工、使其优化
8.渐进算法分析
a.大Ο分析法:上限,表明最坏情况
b.Ω分析法:下限,表明最好情况
c.Θ分析法:当上限和下限相同时,表明平均情况
第二章 线性表
1.线性结构的基本特征
a.集合中必存在唯一的一个“第一元素”
b.集合中必存在唯一的一个“最后元素”
c.除最后元素之外,均有唯一的后继
d.除第一元素之外,均有唯一的前驱
2.线性结构的基本特点:均匀性、有序性
3.顺序表
a.主要特性:元素的类型相同;元素顺序地存储在连续存储空间中,每一个元素唯一的索引值;使用常数作为向量长度
b. 线性表中任意元素的存储位置:Loc(ki) = Loc(k0) + i * L(设每个元素需占用L个存储单元)
c. 线性表的优缺点:
优点:逻辑结构与存储结构一致;属于随机存取方式,即查找每个元素所花时间基本一样
缺点:空间难以扩充
d.检索:ASL=【Ο(1)】
e.插入:插入前检查是否满了,插入时插入处后的表需要复制【Ο(n)】
f.删除:删除前检查是否是空的,删除时直接覆盖就行了【Ο(n)】
4.链表
4.1单链表
a.特点:逻辑顺序与物理顺序有可能不一致;属于顺序存取的存储结构,即存取每个数据元素所花费的时间不相等
b.带头结点的怎么判定空表:head和tail指向单链表的头结点
c.链表的插入(q-next=p-next; p-next=q;)【Ο(n)】
d.链表的删除(q=p-next; p-next = q-next; delete q;)【Ο(n)】
e.不足:next仅指向后继,不能有效找到前驱
4.2双链表
a.增加前驱指针,弥补单链表的不足
b.带头结点的怎么判定空表:head和tail指向单链表的头结点
c.插入:(q-next = p-next; q-prev = p; p-next = q; q-next-prev = q;)
d.删除:(p-prev-next = p-next; p-next-prev = p-prev; p-prev = p-next = NULL; delete p;)
4.3顺序表和链表的比较
4.3.1主要优点
a.顺序表的主要优点
没用使用指针,不用花费附加开销;线性表元素的读访问非常简洁便利
b.链表的主要优点
无需事先了解线性表的长度;允许线性表的长度有很大变化;能够适应经常插入删除内部元素的情况
4.3.2应用场合的选择
a.不宜使用顺序表的场合
经常插入删除时,不宜使用顺序表;线性表的最大长度也是一个重要因素
b.不宜使用链表的场合
当不经常插入删除时,不应选择链表;当指针的存储开销与整个结点内容所占空间相 比其比例较大时,应该慎重选择
第三章 栈与队列
1.栈
a.栈是一种限定仅在一端进行插入和删除操作的线性表;其特点后进先出;插入:入栈(压栈);删除:出栈(退栈);插入、删除一端被称为栈顶(浮动),另一端称为栈底(固定);实现分为顺序栈和链式栈两种
b.应用:
1)数制转换
while (N) {
N%8入栈;
N=N/8;}
while (栈非空){
出栈;
输出;}
2)括号匹配检验
不匹配情况:各类括号数量不同;嵌套关系不正确
算法:
逐一处理表达式中的每个字符ch:
ch=非括号:不做任何处理
ch=左括号:入栈
ch=右括号:if (栈空) return false
else {
文档评论(0)