- 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,向右分支为1
文档评论(0)