- 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、数据项是数据不可分割的最小单位。
3、数据结构的
?逻辑结构(抽象的,与实现无关)
?物理结构(存储结构)顺序映像(顺序存储结构)位置“相邻”非顺序映像(链式存储结构)指针表示关系
?4、算法特性:算法具有正确性、有穷性,确定性,(可行性)、输入,输出
正确性:能按设计要求解决具体问题,并得到正确的结果。
有穷性:任何一条指令都只能执行有限次,即算法必须在执行有限步后结束。
确定性:算法中每条指令的含义必须明确,不允许由二义性
可行性:算法中待执行的操作都十分基本,算法应该在有限时间内执行完毕。
输入:一个算法的输入可以包含零个或多个数据。?输出:算法有一个或多个输出?5、算法设计的要求:?
正??确?性:算法应能满足设定的功能和要求?。????
可??读?性:思路清晰、层次分明、易读易懂?。?
(3)健??壮?性:输入非法数据时应能作适当的反应和处理。????
(4)高??效?性(时间复杂度):解决问题时间越短,算法的效率就越高。??????
(5)低存储量(空间复杂度):完成同一功能,占用存储空间应尽可能少。
二、?线性表?
1、线性表?List:最常用且最简单的数据结构。?含有大量记录的线性表称为文件。?
2、线性表是n个数据元素的有限序列。?
线性结构的特点:?①“第一个”?②“最后一个”?③前驱?④后继。?
3、顺序表——线性表的顺序存储结构?
特点?
?逻辑上相邻的元素在物理位置上相邻。?
b)?随机访问。?
2)?表长为n时,线性表进行插入和删除操作的时间复杂度为O(n),?插入一个元素时大约移动表中的一半元素,?删除一个元素时大约移动表中的(n-1)\2?。
4、线性表的链式存储结构?
1)?类型定义?
简而言之,“数据?+?指针”
2)?不带头结点的空表判定为?L=?=null?
带头结点的空表判定为??L-next=?=null?
循环单链表为空的判定条件为?L.next=?=L?
线性链表的最后一个结点的指针为NULL?
头结点的数据域为空,指针域指向第一个元素的指针。
顺序表和单链表的比较?
6、顺序存储:优点:存储密度大,可随机存储?
?????????? 缺点:大小固定;不利于增减节点;存储空间不能充分利用;容量难扩充?
链式存储:优点:易于插入删除;可动态申请空间;表容量仅受内存空间限制?
?????? 缺点:增加了存储空间的开销;不可以随机存储元素
?栈与队列?
1、栈?
栈:限定仅在表尾进行插入或删除操作的线性表。?
栈顶:表尾端?
栈底:表头?
栈是先进后出的线性表。?
插入栈顶元素称为入栈,删除栈顶元素称为出栈。?
类似于顺序表,插入和删除操作固定于表尾。
3、队列?
先进先出的线性表。?
队尾入队?对头出队?
允许插入的一端叫做队尾?
允许删除的一端叫做对头
链队列
1.?树的定义?
???树(Tree):是?n(n≥0)个有限数据元素的集合。???????
在任意一棵非空树T中:?
?????(1)有且仅有一个特定的称为树根(Root)的结点,根结点无前趋结点;??????
(2)当n1时,除根结点之外的其余结点被分成m(m0)个互不相交的集合T1,T2,?,Tm,其中每一个集合Ti(1≤?i?≤m)本身又是一棵树,并且称为根的子树。?
2.?基本术语:?
结点的度数:结点的非空子树(即后缀)个数叫作结点的度数?
树叶、分支结点:左(右)子树均为空二叉树的结点称作树叶否则称作分支结点。?
结点的层数:规定根的层数是0,其余结点的层数等于其父结点的层数加1?孩子和双亲:?
树的深度:?
树的度数:树中度数最大的结点度数叫作树的度数?
树林:是由零个或多个不相交的树所组成的集合。
3.?二叉树性质:?
1)?二叉树的第i层上至多有2i-1个结点。?
2)?深度为k的二叉树至多有2k-1个结点。??????
?满二叉树:深度为k,有2k-1个结点。?
完全二叉树:给满二叉树的结点编号,从上至下,从左至右,n个结点的完全二叉树中结点在对应满二叉树中的编号正好是从1到n。?
?叶子结点n0,度为2的结点为n2,则n0?=?n2+1。?
考虑结点个数:n?=?n0?+?n1?+?n2
?考虑分支个数:n-1?=?2n2?+?n1?可得n0?=?n2+1?
5.?遍历二叉树(先序DLR、中序LDR、后序LRD)方法与C语言描述?
由二叉树的递归定义可知,一棵二叉树由根结点(D)、根结点的左子树(L)和根结点的右子树(R)三部分组成。因此,只要依次遍历这三部分,就可以遍历整个二叉树。一般有三种方法:先序(前序)遍历DLR(根左右)、中序遍历LDR(左根右)、?后序遍历LRD(左右根)。?
7.
文档评论(0)