数据与算法精品教学(陈健生)数据结构复习.docVIP

数据与算法精品教学(陈健生)数据结构复习.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
绪论 算法特性 有穷性、确定性、可行性、输入(可能0输入)、输出(不能0输出)。 算法评价 正确性、可读性、健壮性、高效率。 时间复杂度、空间复杂度。 数据结构 数据和二元关系。 等价关系(自反,对称,传递) 偏序(自反,反对称,传递=),拟序(反自反,反对此,传递 ),全序(偏序,均可比 实数集上的=) 线性表 问题:空表、存在性、溢出(顺序表)。 顺序表:存储位置连续。存储位置:a[i]=a[0]+l*i,l:元素占用空间。 插入操作移动元素:0加到n 删除操作移动元素:0加到n-1 优点:随机存取(存储删除时间固定)。 缺点:插入,删除操作需要移动表中的数据元素, 事先确定规模,空间效率不高 链表:链式存储。 带表头:处理链表插入删除时需要判断是否为空表的问题并处理表头。 可以建立带表头结点的单向链表 双向链表:插入删除操作需要同时修改两个方向的指针 循环链表。 优点:插入,删除操作无需移动表中的数据元素; 空间利用率高 ? 缺点:不能随机存取 栈 只允许在一端进行插入和删除操作,LIFO、FILO。 问题:栈空出栈。 顺序栈、链式栈 应用:括号匹配,表达式求值。 递归 求阶乘,求最大公因子,fibonacci数列,汉诺塔。 尾递归:递归语句写在末尾。 递归消除:(1)用循环实现 (求阶乘) (2)用迭代实现(斐波那契的迭代实现) 递归的消除往往需要借助显式的栈来实现 队列 一端插入,另一端删除,FIFO。 问题:队空出队、队满入队。 循环队列:(front=front+1) mod n,(rear=rear+1) mod n,元素个数:(rear+n-front) mod n。 当front==rear时,无法区分队列是空是满 解决方法:设置空位、设置标志、设置队长变量)。 链式队列:没有队满的问题,有队空的问题,队空条件为front=NULL 串与串匹配 子串在主串中的位置:第一次出现的位置。注意起始位为0 Brute-Force算法:蛮力,时间复杂度O(m*n)。 KMP算法:时间复杂度O(m+n)。 预处理函数Next:N [t]表示P[0~t]的前缀和P[1~t]的后缀中最长的相同前后 缀。(Next函数的生成方法见讲义) T[i]==P[j]时,如果已经匹配成功,返回i-j,否则i++、j++。 T[i]!=P[j]时,如果j0,j=N[j-1],否则i++。 树 结点:根结点,分支结点,叶子结点。 度:结点的子树个数。 树的度:树中结点的度的最大值,K叉树。 层次:根结点层次为1,其余依次递增。 深度:结点的最大层次。 性质: 树中结点数目等于所有结点的度数加1。 度为k的树中第i层上只多ki-1个结点。 深度为h的k叉树至多有(kh-1)/(k-1)个结点。 具有n个结点的k叉树最小深度为[logk(n(k-1))]+1 。 二叉树 满二叉树、完全二叉树(从左向右排) 二叉树性质: 叶子结点个数为n0,n2个度为2的结点,则有n0=n2+1。 二叉树第i层最多有2i-1个结点。 深度为h的二叉树最多有2h-1个结点。 具有n个结点的完全二叉树深度为[log2(n)]+1。 对n个结点的完全二叉树自上而下且自左向右编号(0~n-1),则: 对任意一个编号为i的结点:若i=0,则编号为[(i-1)/2]的结点为其双亲结点。 若2i+1=n,则该结点无左孩子,否则,2i+1的结点为其左孩子结点。 若2i+2=n,则该结点无右孩子,否则,2i+2的结点为其右孩子结点。 若i为偶数,且i不为0,则其左兄弟为i-1。 若i为奇数,且i不为n-1,则其右兄弟为i+1。 i所在的层次为[log2(i+1)]+1。 树的表示: (1)顺序表示:空间效率很低。 (2)链式表示 二叉树遍历 先序遍历、中序遍历、后序遍历的顺序。可以用栈实现非递归算法。 层序遍历:构造一个队列,先将根插入队列,从表头开始遍历,将遍历过的结点删除,把它的孩子加入队列,直到队列为空。 可以用中序遍历得到中缀表达式,后序遍历得到后缀表达式 Huffman树 WPL最小树 路径长度:根到所有叶子结点的路径长度之和。 带权路径长度(WPL):∑根到所有叶子结点的路径长度乘以叶子的权。 在Huffman树中,权值大的结点离根近。 Huffman树的构造: 给定一个具有权值的结点的集合。 取出两个权值最小的结点。 将这两个结点分别作为左右子树构造一棵树,其根结点的权值为左右子树权值之和。 把新树的根结点加入原集合中。 应用:最优编码。 定长编码,变长编码(解码不唯一),前缀编码。 平均编码长度:∑编码字节数×字符出现概率。 缺点:传播错误,无法差错和纠错。需要统计

您可能关注的文档

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档