DataStructure-大纲.docxVIP

  • 2
  • 0
  • 约1.17万字
  • 约 89页
  • 2016-09-21 发布于重庆
  • 举报
DataStructure-大纲

DataStructure大纲目标:剥离实现细节,对数据结构的基本思想有所了解SIMPLE SET DEEP NO-CLICHE数据结构ADT实现性能分析常用算法技巧算法设计策略、模式数据结构ADT实现线性表ADT**ADT接口【对pos和rank 的重载】【部分冗余】**ADT实现**ADT公共部分实现【遍历Traverse:对L中所有元素(的数据域)依次实施visit()操作】【visit()即一个以数据域内容为参数的函数,可以修改数据域】【合并Union:求两个不可重复线性表的并集】【涉及m次locate(),locate()花费O(n);故复杂度为O((1+n)(1+m))】【归并Merge:将两个非降序可重复线性表合并为一个】【n+m次的取值、比较、插入,均为常数操作;故为O(n+m)】**线性表的数组实现【存储结构连续】【可在O(1)时间内访问任意元素,但是不易插入、删除】【O(n)操作有,关键是InsertDelete】Locate(value, comparator)Find(value, comparator)Insert(rank, value)Delete(rank)Traverse()【扩容策略:一旦溢出,容量加倍】**线性表的链表实现【删除插入一个节点,KEY:用header/trailer去控制前后,保证修改时的联系,从而可以任意次序修改;以冗余换方便,可靠】**两种实现时间复杂度比较按value定位按rank绝对移动在头部插入/删除在非头部插入/删除相对移动向前相对移动向后Vectorn1nn11Linked-Listnn1nn1栈ADT**ADT接口StackInit()StackDestroy()StackEmpty()StackSize()StackTraverse()Top()Push()Pop()**ADT的线性表实现【为LIST的子集,直接按LIST实现】【数组、双链表实现:后端为栈顶,遍历从栈底到栈顶】【单链表实现:前端为栈顶,遍历从栈顶到栈底】**栈的自我实现【基本元素】【注意栈满增加策略】**栈混洗【DEF】【进栈肯定是按从小到大,但是通过不同时刻出栈达到混洗目的】【如下图,纵轴为入栈,横轴为出栈,同时累计n次结束,且过程中不能出现出的比入得多的情况,即不能低于y=x直线】【长度n序列,混洗总数SP(n) = Catalan(n) = (2n)! / (n+1)! / n!】【混洗数量n!;因为任意含类似“312”序列的均不是混洗列,即当3在2、1前出,且1、2肯定在3前入栈,说明此时1、2还在栈中,且2压在1上,故不可能出现1先出,2后出的状况】**用栈解决不确定问题【不确定:问题规模不断增长,最后方能归纳确定,前步结果需储存】**进制转换问题【进制转换问题:将值转换为base进制表达式;key:不知有几位】【将取余所得低位结果不断压入栈,最后从栈顶到栈底即结果】【逆问题:将一个base进制表达式转换为值,KEY:长度确定,无需用栈,从左到右依次根据权累加即可】**括号匹配问题【关键仍是需要暂存左括号,等待未知时刻匹配】**表达式求值问题:【用栈实现的KEY:通过计算优先级高的表达式,不断化简表达式,但是前步结果必须储存PUSH,且现有内容随时可能更新POP】【具体算法如下,其中优先计算匹配根据运算符号优先级表得到】【栈顶’*’当前,通过判断二者关系决定栈顶是否可优先计算】\0栈中当前为空时,栈顶任意运算符都优先,但\0碰\0即运算结束()消括号栈顶的)优先级绝对的高**RPN后缀算式,祛除优先级问题【KEY:将一个算式按照优先级变换为顺序上的先后】【普通算式改写为RPN算式,用元字符间隔操作符和操作数】【RPN栈式计算:按先后顺序依次入栈,遇到操作符则POP相应操作数并且将结果PUSH,最后栈中所余数即结果】【程序实现RPN算式转换,KEY:任何优先计算的运算符立即接到RPN后面】**实现试探-回溯【相当于Theseus的绳子,可以PUSH伸长试探,POP回收回溯】【迷宫问题,KEY:用栈记录路径】队列ADT**先进先出【一种资源分配方式,先到先得,类似排队,比较公平】【银行窗口业务模拟】串ADT**串的特征【长度很大】【元素来源有限,通常是有限字符集SIGMA】**串ADT【子串、前缀、后缀的定义:注意k=0即空串】**定长存储实现【CORE:定长数组】【注意+1处即每个串的0元素存储串长度】【最大串长有限制:空间浪费 + 截断】【串操作都基于“字符序列的复制”;O(n)】**堆分配实现【CORE:动态数组】【头指针加长度】【最大串长无限制,无截断现象】【串操作仍然基于“重分配”和“字符序列的复制”;O(n)】【数组耗资源基操:Insert, Concat,

文档评论(0)

1亿VIP精品文档

相关文档