基于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语言的堆栈与队列类的实现相关推荐

  1. python实现队列_Python学习教程:用队列实现栈

    接着上一期跟大家说的用栈实现队列,这期的 Python学习教程 跟大家讲 用队列实现栈 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() ...

  2. 循环队列c语言的实现,循环队列的C语言实现

    生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题:从生活中,可以抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结构 ...

  3. python字符串反转方法_Python程序使用堆栈和反转方法反转字符串

    python字符串反转方法 Given a string and we have to reverse it by using stack and by using reversed method i ...

  4. 怎么用python画个电脑_python语言还是java如何用python画爱心

    用python绘制爱心的基本步骤如下: 002pc.com对<python语言还是java如何用python画爱心>总结来说,为我们学习Python很实用. 首先先下载安装好python程 ...

  5. python高级语言应用报告_Python 语言及其应用 - 第一章

    1.1:Python是一门动态语言(也被称为脚本语言),是一门非常通用的高级语言. 1.2:关于静态语言与动态语言:静态语言要求你必须声明每个变量的类型:它会使用多少内存以及允许的使用方法.计算机利用 ...

  6. python编程定义圆_Python语言编程系列014——PyQt中自定义圆形指示灯

    背景 PyQt是Qt界面库在Python下的绑定库,为熟悉或喜欢Qt的开发者在Python语言下编写GUI界面程序提供了极大的便利,关于自定义控件前面已经给出了两个例子,分别是自定义颜色指示框控件和自 ...

  7. python刷新网页脚本_python语言如何测试实现页面下拉刷新

    2017-05-10 回答 对于各种驱动接口,python来编写测试用例的好处是:由于python不需要编译,你所执行的也就是你所编写的,当发生异常的时候,你无须打开集成开发环境,加载测试工程.并调试 ...

  8. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  9. python 测试端口连通_Python语言 实现端口连通性检测

    本文主要向大家介绍了Python语言 实现端口连通性检测,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. # -*- coding: utf-8 -*- #!/bin/env py ...

最新文章

  1. 022_html计算机输出标签
  2. Socket编程之简单介绍
  3. 数智化转型人才“大考”,综合人才成为企业“基础设施”
  4. mysql主从从配置详解_MySQL主从配置详解
  5. seo每日一贴_白杨SEO:我看ZAC的外贸SEO应该怎样做?(策略篇)
  6. ad域管理与维护_U-Mail邮件系统LDAP/AD同步极大提升办公效率
  7. git设置master权限_git怎么控制成员的权限?
  8. features its own
  9. 新手菜鸟防***必备知识
  10. 亲测有效 抖音视频如何批量去水印下载原视频2020-09-16
  11. 用php打印出日历_PHP完成一个日历
  12. php汉字转拼音百家姓版,百家姓详(带拼音).ppt
  13. adb 查看固件版本
  14. 大多数Nobody游戏下载(带象棋残局攻略) 中文破解版
  15. 班级网站(网页设计实验)
  16. 实现文件及文件批量改名的工具(包含未确定盘符的情况下)
  17. 行人车辆检测与计数系统(Python+YOLOv5深度学习模型+清新界面)
  18. 软件测试 —— Python(三)之数据序列(容器)
  19. itunes下载的软件怎么安装到手机
  20. AsyncTask的优缺点

热门文章

  1. shiro subject.getprincipal()为null_(变强、变秃)Java从零开始之Shiro安全框架
  2. php 获取一年的月份_php 根据日期获取星座
  3. 需求获取的三阶段:需求背景、需求调研、需求分析 (2)
  4. 专题导读:空天大数据
  5. 基于ISM的大数据在建筑领域中的应用障碍分析
  6. 作者:纪珍(1982-),女,中国科学院国家空间科学中心副研究员
  7. 作者:郭雷风,中国农业科学院农业信息研究所助理研究员。
  8. 【需求工程】需求分析的5W1H8C1D方法
  9. 【C语言】编写一个简单的学生成绩管理系统
  10. 删除win10开始菜单中程序的目录