python堆栈与队列_python语言的堆栈与队列类的实现
基于python语言的数据结构之堆栈与队列的实现
# 堆栈的实现
# -*- coding: utf-8 -*-
"""
栈(stack), 是一种容器,可以存入数据元素,访问元素,删除元素
只允许在容器的一段存取数据
特点: 后进先出 Last in first out
"""
"""
借助list来实现堆栈
添加的方法; 压栈(入栈)
弹栈(出栈)
Stack() 创建一个新的空栈
push(item) 添加一个新元素 item 到栈顶
pop() 弹出栈顶元素
peek() 返回栈顶元素
is_empty() 判断栈是否为空
size() 返回栈元素的个数
"""
class Stack(object):
"""栈"""
def __init__(self):
self.__list = []
def push(self, item):
"""添加一个新元素item到栈顶"""
self.__list.append(item) # 尾部添加 ,时间复杂度o1
# self.__list.insert(0,item) 这样从尾部添加的时间复杂度为O(n)
def pop(self):
"""弹出栈顶元素"""
return self.__list.pop()
def peek(self):
"""返回栈顶元素"""
if self.__list:
return self.__list[-1]
return None
def is_empty(self):
"""判断栈是否为空"""
return self.__list == []
def size(self):
"""返回栈元素的个数"""
return len(self.__list)
if __name__ == '__main__':
s = Stack()
print(s.is_empty())
s.push(1)
s.push(3)
s.push(4)
print(s.pop())
print(s.pop())
print(s.pop())
# 队列的实现
# -*- coding: utf-8 -*-
class Queue:
"""队列"""
def __init__(self):
self.__list = []
def enqueue(self, item):
"""往队列中添加一个元素"""
self.__list.append(item) # 时间复杂度o(1)
def dequeue(self):
"""从队列头部删除一个元素"""
return self.__list.pop(0) # 时间复杂度 o(n)
def is_empty(self):
"""判断是否为空"""
return self.__list == []
def size(self):
"""返回队列大小"""
return len(self.__list)
if __name__ == '__main__':
s = Queue()
print(s.is_empty())
s.enqueue(1)
s.enqueue(3)
s.enqueue(4)
print(s.dequeue())
print(s.dequeue())
print(s.dequeue())
# 双端队列的实现
# -*- coding: utf-8 -*-
class Deque(object):
def __init__(self):
self.__list = []
def add_front(self, item):
"""往队列头部添加一个元素"""
self.__list.insert(0, item) # 时间复杂度o(1)
def add_rear(self, item):
"""往队列尾部添加一个元素"""
self.__list.append(item) # 时间复杂度o(1)
def pop_rear(self):
"""从队列尾部删除一个元素"""
return self.__list.pop() # 时间复杂度 o(1)
def pop_front(self):
"""从队列头部删除一个元素"""
return self.__list.pop(0) # 时间复杂度 o(n)
def is_empty(self):
"""判断是否为空"""
return self.__list == []
def size(self):
"""返回队列大小"""
return len(self.__list)
python堆栈与队列_python语言的堆栈与队列类的实现相关推荐
- python实现队列_Python学习教程:用队列实现栈
接着上一期跟大家说的用栈实现队列,这期的 Python学习教程 跟大家讲 用队列实现栈 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() ...
- 循环队列c语言的实现,循环队列的C语言实现
生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题:从生活中,可以抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结构 ...
- python字符串反转方法_Python程序使用堆栈和反转方法反转字符串
python字符串反转方法 Given a string and we have to reverse it by using stack and by using reversed method i ...
- 怎么用python画个电脑_python语言还是java如何用python画爱心
用python绘制爱心的基本步骤如下: 002pc.com对<python语言还是java如何用python画爱心>总结来说,为我们学习Python很实用. 首先先下载安装好python程 ...
- python高级语言应用报告_Python 语言及其应用 - 第一章
1.1:Python是一门动态语言(也被称为脚本语言),是一门非常通用的高级语言. 1.2:关于静态语言与动态语言:静态语言要求你必须声明每个变量的类型:它会使用多少内存以及允许的使用方法.计算机利用 ...
- python编程定义圆_Python语言编程系列014——PyQt中自定义圆形指示灯
背景 PyQt是Qt界面库在Python下的绑定库,为熟悉或喜欢Qt的开发者在Python语言下编写GUI界面程序提供了极大的便利,关于自定义控件前面已经给出了两个例子,分别是自定义颜色指示框控件和自 ...
- python刷新网页脚本_python语言如何测试实现页面下拉刷新
2017-05-10 回答 对于各种驱动接口,python来编写测试用例的好处是:由于python不需要编译,你所执行的也就是你所编写的,当发生异常的时候,你无须打开集成开发环境,加载测试工程.并调试 ...
- python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...
本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...
- python 测试端口连通_Python语言 实现端口连通性检测
本文主要向大家介绍了Python语言 实现端口连通性检测,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. # -*- coding: utf-8 -*- #!/bin/env py ...
最新文章
- 022_html计算机输出标签
- Socket编程之简单介绍
- 数智化转型人才“大考”,综合人才成为企业“基础设施”
- mysql主从从配置详解_MySQL主从配置详解
- seo每日一贴_白杨SEO:我看ZAC的外贸SEO应该怎样做?(策略篇)
- ad域管理与维护_U-Mail邮件系统LDAP/AD同步极大提升办公效率
- git设置master权限_git怎么控制成员的权限?
- features its own
- 新手菜鸟防***必备知识
- 亲测有效 抖音视频如何批量去水印下载原视频2020-09-16
- 用php打印出日历_PHP完成一个日历
- php汉字转拼音百家姓版,百家姓详(带拼音).ppt
- adb 查看固件版本
- 大多数Nobody游戏下载(带象棋残局攻略) 中文破解版
- 班级网站(网页设计实验)
- 实现文件及文件批量改名的工具(包含未确定盘符的情况下)
- 行人车辆检测与计数系统(Python+YOLOv5深度学习模型+清新界面)
- 软件测试 —— Python(三)之数据序列(容器)
- itunes下载的软件怎么安装到手机
- AsyncTask的优缺点
热门文章
- shiro subject.getprincipal()为null_(变强、变秃)Java从零开始之Shiro安全框架
- php 获取一年的月份_php 根据日期获取星座
- 需求获取的三阶段:需求背景、需求调研、需求分析 (2)
- 专题导读:空天大数据
- 基于ISM的大数据在建筑领域中的应用障碍分析
- 作者:纪珍(1982-),女,中国科学院国家空间科学中心副研究员
- 作者:郭雷风,中国农业科学院农业信息研究所助理研究员。
- 【需求工程】需求分析的5W1H8C1D方法
- 【C语言】编写一个简单的学生成绩管理系统
- 删除win10开始菜单中程序的目录