1. class Node:
  2. def __init__(self, data=None):
  3. self.next = None
  4. self.data = data
  5. class Stack:
  6. def __init__(self):
  7. '''初始化'''
  8. self.top = None
  9. self.size = 0
  10. def push(self, data):
  11. '''将元素压入栈内'''
  12. node = Node(data)
  13. if self.top:
  14. node.next = self.top
  15. self.top = node
  16. else:
  17. self.top = node
  18. self.size += 1
  19. def pop(self):
  20. '''弹出栈顶元素'''
  21. if self.top:
  22. data = self.top.data
  23. self.size -= 1
  24. if self.top.next:
  25. self.top = self.top.next
  26. else:
  27. self.top = None
  28. return data
  29. else:
  30. return None
  31. def peek(self):
  32. '''查看栈顶元素'''
  33. if self.top:
  34. return self.top.data
  35. else:
  36. return None

队列

  1. class Node:
  2. def __init__(self, data=None, next=None, prev=None):
  3. self.data = data
  4. self.next = next
  5. self.prev = prev
  6. class Queue:
  7. def __init__(self):
  8. self.head = None
  9. self.tail = None
  10. self.size = 0
  11. def enqueue(self, data):
  12. '''入队'''
  13. new_node = Node(data, None, None)
  14. if self.head is None:
  15. self.head = new_node
  16. self.tail = self.head
  17. else:
  18. new_node.prev = self.tail
  19. self.tail.next = new_node
  20. self.tail = new_node
  21. self.size += 1
  22. def dequeue(self):
  23. '''出队'''
  24. current = self.head
  25. if self.size == 1:
  26. self.size -= 1
  27. self.head = None
  28. self.tail = None
  29. elif self.size > 1:
  30. self.head = self.head.next
  31. self.head.prev = None
  32. self.size -= 1
  33. def iter(self):
  34. '''遍历队列'''
  35. current = self.head
  36. while current:
  37. data = current.data
  38. current = current.next
  39. yield data

Python的栈和队列实现的更多相关文章

  1. 【DataStructure In Python】Python模拟栈和队列

    用Python模拟栈和队列主要是利用List,当然也可以使用collection的deque.以下内容为栈: #! /usr/bin/env python # DataStructure Stack ...

  2. 使用python实现栈和队列

    1.使用python实现栈: class stack(): def __init__(self): self.stack = [] def empty(self): return self.stack ...

  3. Python实现栈、队列

    目录 1. 栈的Python实现 1.1 以列表的形式简单实现栈 1.2 以单链表形式实现栈 2. 队列的Python实现 2.1 以列表实现简单队列 2.2 以单链表形式实现队列   本文将使用py ...

  4. python之栈与队列

    这个在官网中list支持,有实现. 补充一下栈,队列的特性: 1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIF ...

  5. Python 实现栈与队列

    #基于Python2.7 #基于顺序表实现 #发现用Python写题时,没有像写C++时方便的STL可用,不过查阅资料之后发现用class实现也很简洁,不过效率应该不是很高 Python实现栈并使用: ...

  6. python之 栈与队列

    忍不住想报一句粗口"卧槽"这尼玛python的数据结构也太特么方便了吧 想到当初学c语言的数据结构的时候,真的是一笔一划都要自己写出来,这python尼玛直接一个模块就ok 真的是 ...

  7. python之栈和队列

    1. 栈 1.1 示例 #!/usr/bin/env python # -*- codinfg:utf-8 -*- ''' @author: Jeff LEE @file: .py @time: 20 ...

  8. Python数据结构——栈、队列的实现(二)

    1. 一个列表实现两个栈 class Twostacks(object): def __init__(self): self.stack=[] self.a_size=0 self.b_size=0 ...

  9. Python数据结构——栈、队列的实现(一)

    1. 栈 栈(Stack)是限制插入和删除操作只能在一个位置进行的表,该位置是表的末端,称为栈的顶(top).栈的基本操作有PUSH(入栈)和POP(出栈).栈又被称为LIFO(后入先出)表. 1.1 ...

随机推荐

  1. Visual Studio 2019 Serial Keys

    Visual Studio 2019 Enterprise BF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio 2019 Professional NYWVH-HT ...

  2. ARM-GPIO

    操作GPIO有三种方法: 调用库函数读取IO的输入电平:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_t GPIO_pin): 操作寄 ...

  3. inode 软/硬链接

    一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统 ...

  4. 挂载银行前置机Ukey到windows server2012虚拟机的操作记录

    公司有跟银行对接的金融业务,需要配置银行前置机环境.通过KVM的WebVirtMgr管理平台创建windows server2008虚拟机,安装参考:kvm虚拟化管理平台WebVirtMgr部署-完整 ...

  5. Docker容器学习梳理 - 容器时间跟宿主机时间同步

    在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致.如下: 宿主机时间 [root@slave-1 ~]# date Fri M ...

  6. Redis日常操作命令小结

    Redis缓存服务是运维工作中比较常见的一种维护工作,下面就redis日常操作命令在此做一简单小结,以备查用: 1)连接redis服务命令# redis-cli -h redis主机ip或主机域名 - ...

  7. Shell学习笔记二

    一.调试脚本 调试功能是每一种编程语言都应该实现的重要特性之一,当出现一些始料未及的情况时,用它来生成脚本运行信息.调试信息可以帮你弄清楚是什么原因使得程序发生崩溃或行为异常.每位系统程序员都应该了解 ...

  8. Beta项目展示

    Team C# 一.团队成员简介 杜正远,队长. 博客地址:http://www.cnblogs.com/kevindu/ 崔强,全职PM. 博客地址:http://www.cnblogs.com/m ...

  9. 学习github心得

    Git 是 Linux 的创始人 Linus Torvalds 开发的开源和免费的版本管理系统,利用底层文件系统原理进行版本控制的工具.Git是目前为止最著名运用最好最受欢迎的分布式的配置管理工具. ...

  10. a simple example for spring AOP

    /** * Created by Administrator on 2015/11/25. * a interface */public interface ArithmeticCalculator{ ...