栈概览 栈是线性集合,遵从后进先出原则( Last - in first - out , LIFO )原则 栈常用的操作包括压入( push ) 和弹出( pop ) 栈的应用 将中缀表达式转换为后缀表达式,并且计算后缀表达式的值 回溯算法 管理计算机内存以支持函数和方法调用 支持应用程序中的撤消功能 维护Web浏览器访问链接的历史记录 使用栈 栈不是Python的内建类型,可以用列表代替,但是列表可以在任何位置插入,删除,替换元素,这些违背了栈作为一种抽象数据类型的本意,因此需要为栈定义一种更…
树的概览 树是层级式的集合 树中最顶端的节点叫做根 个或多个后继(子节点). 没有子节点的节点叫做叶子节点 拥有子节点的节点叫做内部节点 ,其子节点位于层级1,依次类推.一个空树的层级为 -1 树的术语 术语概览 示列 普通的树和二叉树 二叉树中,每个节点最多只有两个子节点,分别称为左子节点和右子节点 树的递归定义 普通的树 要么为空,要么包含一个有限的节点的集合 T.有一个和所有其他节点不同的节点r,称为根.此外,集合 T - {r}可以被划分为不相边的子集.每个子集都是一个普通的树. 二叉树…
接口 接口是软件资源用户可用的一组操作 接口中的内容是函数头和方法头,以及它们的文档 设计良好的软件系统会将接口与其实现分隔开来 多态 多态是在两个或多个类的实现中使用相同的运算符号.函数名或方法.多态函数的示例是 str 和 len.多态运算符是 + 和 ==.多态方法的示例是 add 和 isEmpty. 将接口与实现隔开的好处 降低了用户的学习难度 允许用户以即插即用的方式,快速的将资源整合起来 让用户有机会在相同资源的不同实现中做出选择 允许用户对资源的实现做出修改,而不影响用户代码 开…
概念 列表是一个线性的集合,允许用户在任意位置插入.删除.访问和替换元素 使用列表 基于索引的操作 基本操作 数组与列表的区别 数组是一种具体的数据结构,拥有基于单个的物理内存块的一种特定的,不变的实现. 列表是一种抽象的数据类型,可以由各种方式表示,数组只是其中一种方式 基于内容的操作 基本操作 基于位置的操作 相对于游标位置执行,这个操作允许程序员在通过移动游标在列表中导航.其可通过列表迭代器来实现 列表迭代器是附加到列表的后备储存 列表迭代器游标的位置 第一项之前 相领两项之间 最后一项之…
队列概览 队列是线性的集合 队列的插入限制在队尾,删除限制在队头.支持先进先出协议( FIFIO, first-in first-out ) 两个基本操作 add:在队尾添加一项 pop:从队头弹出一项 优先集合 在优先队列中,具有较高优先级的项,会在那些具有较低优先级的项之前弹出.具有相同优先级的项,则仍然按照 FIFO 的顺序弹出 计算机科学中的大多数队列,涉及对共享资源的访问 CPU访问 磁盘访问 打印机访问 队列接口及其应用 队列接口中的方法 peek 和 pop 方法需要验证队列非空的…
评估算法的性能 评价标准 正确性 可读性和易维护性 运行时间性能 空间性能(内存) 度量算法的运行时间 示例 """ Print the running times for problem sizes that double, using a aingle loop """ import time print("%12s%16s" % ("Problem Size", "Seconds"…
集合类型 定义 个或多个其他对象的对象.集合拥有访问对象.插入对象.删除对象.确定集合大小以及遍历或访问集合的对象的操作 分类 根据组织方式进行 线性集合 线性集合按照位置排列其项,除了第一项,每一项都有唯一的一个前驱,除了最后一项,每一项都有唯一一个后继 示意图 层次集合 层次集合中的项都拥有唯一的前驱(除了顶层的项),以及 0 个或多个后继.单个的称为根的项是没有前驱的. 示意图 图集合 图中的项拥有0 个或多个后继,以及0 个或多个前驱 示意图 无序集合 无序集合的项没有特定的顺序 示意图…
数据结构是表示一个集合中包含的数据的一个对象 数组数据结构 数组是一个数据结构 支持按照位置对某一项的随机访问,且这种访问的时间是常数 在创建数组时,给定了用于存储数据的位置的一个数目,并且数组的长度保持固定 插入和删除需要移动数据元素 创建一个新的.较大的或较小的数组,可能也需要移动数据元素 支持的操作 在给定位置访问或替代数组的一个项 查看数组的长度 获取数组的字符串表示 数组操作及Arrary 类方法 用户的数组操作 Array类中的方法 a = Array(10) __init__( c…
使用集 集是没有特定顺序的项的一个集合,集中的项中唯一的 集上可以执行的操作 返回集中项的数目 测试集是否为空 向集中添加一项 从集中删除一项 测试给定的项是否在集中 获取两个集的并集 获取两个集的交集 获取两个集的差集 判断一个集是否是另一个集的子集 集上的差集和子集操作是不对称的 Python 中的 set 类 set 类中常用的方法 使用示例 .5 时,即重新哈希表.这样会将 DELETED 状态的单元格全部变为当前占用的单元格或者空单元格 如果表有一些方法记录了访问给定项的频率,即可以按…
变量和赋值语句 在同一条赋值语句中可以引入多个变量 交换变量a 和b 的值 a,b = b,a Python换行可以使用转义字符\,下一行的缩进量相同 )\ 帮助文档 help() 控制语句 条件式语句 如果只有一条语句,可以不用换行 :print('smaller') 模块测试语句 if __name__ == "__main__": main() 字符串及其运算 运算符 ] #Retruns "eat" 格式化字符串 格式 <formtt string&g…