队列和栈

一张图可以简单的说明
栈
为了达到时间复杂度最低:选择的是python列表实现栈,而列表是顺序表
入栈push的时候选择在列表的尾部进行添加元素,出栈在列表尾部弹出

class Stack(object):"""栈"""def __init__(self):self.items = []def is_empty(self):"""判断是否为空"""return self.items == []def push(self, item):"""加入元素"""self.items.append(item)def pop(self):"""弹出元素"""return self.items.pop()def peek(self):"""返回栈顶元素"""return self.items[len(self.items)-1]def size(self):"""返回栈的大小"""return len(self.items)if __name__ == "__main__":stack = Stack()stack.push("hello")stack.push("world")stack.push("itcast")print stack.size()print stack.peek()print stack.pop()print stack.pop()print stack.pop()

队列

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表(顺序表,链表均可)。
队列
为了达到时间复杂度最低:选择的是python列表实现栈,而列表是顺序表

如果选择在头部进行添加是O(n),尾部进行弹出是O(1) ---->实际情况:对队列进行弹出比较多

如果选择在尾部进行添加时O(1),头部进行弹出是O(n) —>实际情况:对队列进行添加比较多

class Queue(object):"""队列"""def __init__(self):self.items = []def is_empty(self):return self.items == []def enqueue(self, item):"""进队列"""self.items.insert(0,item)def dequeue(self):"""出队列"""return self.items.pop()def size(self):"""返回大小"""return len(self.items)if __name__ == "__main__":q = Queue()q.enqueue("hello")q.enqueue("world")q.enqueue("itcast")print q.size()print q.dequeue()print q.dequeue()print q.dequeue()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CoreAnimation编程指南(四)图层树结构

图层不但给自己提供可视化的内容和管理动画,而且充当了其他图层的容器类,构建图层层次结构。 本章介绍了图层层次结构,以及如何操纵该图层层次结构。一、什么是图层树的层次结构1.图层树是核心动画里面类似Cocoa视图的层次结构。比如一个NSVi…

学习散列表

回顾一下简单查找和二分查找 杂货店商品对应的价格举例: 简单查找就是拿出商品价目本,这个价目本并不是有序的,顾客问苹果多少钱,需要一个一个去查找某一个商品的价格,需要O(n)时间。 同样是一个价目本,但…

CoreAnimation编程指南(五)图层内容

当我们使用Cocoa的视图的时候,我们必须继承NSView或者UIView并且重载函数drawRect:来显示任何内容。但是CALayer实例可以直接使用,而无需继承子类。因为CALayer是一个键-值编码兼容的容器类,你可以在实例里面存储任意值,所以子类实…

SHA算法

回顾散列算法 我的上篇文章:学习散列表 在上篇文章杂货铺的示例中,我们希望散列函数的结果是均匀分布的。散列函数接受一个字符串,并返回一 个索引号。 安全散列算法(secure hash algorithm, SHA)函数 给…

python实现搜索之二分查找

搜索 搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几种常见方法:顺序查找、二分法查找、二叉树查找、哈希查找 二分法查找 二分查找又称折半查找,优点是比较次数少&#x…

CoreAnimation编程指南(九)图层布局

NSView提供了经典的“stuts and springs”模式,用于视图调整大小的时候把关联到它父图层的视图重新调整位置。图层支持该模式,而且Mac OS X上面的核心动画提供了一个更通用的布局管理器机制,允许开发者自己写他们自己的布局管理器。可以为图层…

数据库优化、数据库基础等常用知识点总结

建表优化 1)数据库范式 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 如电话列可进行拆分—家庭电话、公司电话第二范式(2NF):首先是 1NF,另外包含两…

一片文章概括大部分python面试基础常考题(部分有详解)

本片文章部分参考地址:https://segmentfault.com/a/1190000018737045 python是动态解释性的强类型定义语言 强类型:不允许不同类型相加。例如:整形字符串会报类型错误。 动态:不使用显示数据类型声明,且确定一个变量…

经典逻辑编程题(本文用python实现)

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思…

CoreData简介

一、概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 3.好处:能够合理管理内存,避免使用sql的麻烦,高效…

NSZombieEnabled使用

我们做iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash,出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源,只是在应用 Delegate 上留下像Thread 1: Program received signal:"EXC_BAD_ACCESS",让问题无从找起…

通过终端,查看sqlite3的存储文件

在调试应用的时候,可以查看数据库里的数据。 1、定位到模拟器的目录 cd ~/Library/Application\ Support/iPhone\ Simulator 2、查找文件名包含 OrgChart.sqlite的文件,并打印路径 find . -name "OrgChart.sqlite" –print 输出: .…

iOS的事件分发

移动平台上的开发主要关注数据以及数据的处理,事件的处理以及UI。所以事件的分发处理是很重要的一个环节,对于一个平台的优劣来说也是一项重要的参数。如果事件的分发设计的不好,一些复杂的UI场景就会变得很难写甚至没法写。从小屏没有触摸的…

iOS开发ARC入门和使用

本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论。请不要将本文的部分或全部内容用于商用,谢谢合作。 欢迎转载本文,但是转载请注明本文出处:http://www.onevcat.com/2012/06/arc-hand-by-han…

UIBezierPath 的使用介绍

使用UIBezierPath类可以创建基于矢量的路径。此类是Core Graphics框架关于path的一个封装。使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状。1.Bezier Path 基础UIBezierPath对象是CGPathRef数据类型的封装。path如果是基…

iOS中的XML解析

解析方式分类: 解析 XML 通常有两种方式,DOM 和 SAX:DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历树结构可以检索任意XML节点,读取它的属性和值。 iOS中XML解析是…

iOS中bundle的使用

一、概述1.在我们使用第三方框架时,常常看到XXX.bundle的文件。我们找到该文件,显示包内容,大致看到很多资源文件:图片、配置文本、XIB文件……2.什么是Bundle文件:简单理解,就是资源文件包。我们将许多图片…

CoreData 自定义数据类型

在CoreData中,Entity中Attribute的类型只有固定的几种可选。如下图: 如果我们要想直接存放UIImage到数据库,如何做? 1.在coredata中新建的attribute中类形选择Transformable. 意思表示这个字段是自定义的类型。 2.在生成的NSMana…

CoreData并发操作模式简介

iOS5.0中,苹果为CoreData的并发处理添加了两个内容。一、首先介绍第一个内容:CoreData框架中的NSManagedObjectContext类增加新的初始化方法:initWithConcurrencyType:(NSManagedObjectContextConcurrencyType)ct;1.参数方法介绍:…

【Linux系统基础】(3)在Linux上部署运维监控Zabbix和Grafana

目录 运维监控Zabbix部署简介安装安装前准备 - Mysql安装Zabbix Server 和 Zabbix Agenta. 安装Zabbix yum库b. 安装Zabbix Server、前端、Agentc. 初始化Mysql数据库d. 为Zabbix Server配置数据库e. 配置Zabbix的PHP前端 配置zabbix 前端(WEB UI) 运维监…