首页 > 编程语言 >python 队列简单实现

python 队列简单实现

时间:2023-06-30 17:23:10浏览次数:53  
标签:node __ cur python self value next 队列 简单

  1 class QueuryExcept(Exception): ...
  2 
  3 class LinkNode:
  4     def __init__(self, value: int, next = None):
  5         self.value: int = value
  6         self.next: LinkNode = next
  7 
  8     def __repr__(self) -> str:
  9         li = [self.value]
 10         next = self.next
 11         while next:
 12             li.append(next.value)
 13             next = next.next
 14         return str(li)
 15     
 16 
 17 class MyFifoQueue:
 18     def __init__(self):
 19         self.__size = 0
 20         self.tail_node = self.root_node = LinkNode(0)
 21 
 22     def push(self, value):
 23          self.tail_node.next = LinkNode(value)
 24          self.tail_node = self.tail_node.next
 25          self.__size += 1
 26 
 27     def pop(self):
 28         cur_node = self.root_node.next
 29         if cur_node == None:
 30             # raise QueuryExcept('queue is empty')
 31             return None
 32         self.root_node.next = self.root_node.next.next
 33         self.__size -= 1
 34         ret_value = cur_node.value
 35         del cur_node
 36         return ret_value
 37 
 38     @property
 39     def size(self):
 40         return self.__size
 41 
 42     def __repr__(self):
 43         li = []
 44         cur = self.root_node.next
 45         while cur:
 46             li.append(cur.value)
 47             cur = cur.next
 48         return str(li)
 49     
 50 class MyLifoQueue:
 51     def __init__(self):
 52         self.__size = 0
 53         self.tail_node = None
 54 
 55     def push(self, value):
 56          new_node = LinkNode(value)
 57          new_node.next = self.tail_node
 58          self.tail_node = new_node
 59          self.__size += 1
 60 
 61     def pop(self):
 62         cur_node = self.tail_node
 63         if cur_node == None:
 64             # raise QueuryExcept('queue is empty')
 65             return None
 66         self.tail_node = self.tail_node.next
 67         self.__size -= 1
 68         ret_value = cur_node.value
 69         del cur_node
 70         return ret_value
 71 
 72     @property
 73     def size(self):
 74         return self.__size
 75 
 76     def __repr__(self):
 77         li = []
 78         cur = self.tail_node
 79         while cur:
 80             li.append(cur.value)
 81             cur = cur.next
 82         return str(li)
 83 
 84 def fifo_test():
 85     print('fifo_test')
 86     mylist = MyFifoQueue()
 87     value = 0
 88     for i in range(3):
 89         value = i + 1
 90         mylist.push(value)
 91         print(f'push value: {value}')
 92     while mylist.size > 0:
 93         value = mylist.pop()
 94         print(f'pop value: {value}')
 95 
 96 def lifo_test():
 97     print('lifo_test')
 98     mylist = MyLifoQueue()
 99     value = 0
100     for i in range(3):
101         value = i + 1
102         mylist.push(value)
103         print(f'push value: {value}')
104     while mylist.size > 0:
105         value = mylist.pop()
106         print(f'pop value: {value}')
107    
108 if __name__ == '__main__':
109     fifo_test()
110     lifo_test()
111     print('main end')

 

标签:node,__,cur,python,self,value,next,队列,简单
From: https://www.cnblogs.com/endenvor/p/17517354.html

相关文章

  • Java 网络爬虫,就是这么的简单
    是Java网络爬虫系列文章的第一篇,如果你还不知道Java网络爬虫系列文章,请参看学Java网络爬虫,需要哪些基础知识。第一篇是关于Java网络爬虫入门内容,在该篇中我们以采集虎扑列表新闻的新闻标题和详情页为例,需要提取的内容如下图所示: 我们需要提取图中圈出来的文字及其对......
  • python 编写远程连接服务器脚本
    importparamikoclient=paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())client.connect('10.116.33.116',username='root',password='123456')stdin,stdout,stderr=client.exec_command('......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-5-元素定位大法-上篇
    1.简介说到元素定位,小伙伴或者童鞋们肯定会首先想到selenium的八大元素定位大法。同理Playwright也有自己的元素定位的方法。今天就给小伙伴或者童鞋们讲解和分享一下Playwright的元素定位方法。宏哥对UI自动化的理解:定位元素--->操作元素---->断言。2.定位器定位器(Locator)......
  • Django使用python的view创建a标签
    1、views文件deftestaa(request):#aa=[]foriinrange(1,10):aa='<ahref="">test</a>'aa='<ahref="http://www.baidu.com">百度链接</a></br>'#bb="<a......
  • Python运行时发生错误如何快速解决?
    撰写完Python程序后,很多人在执行过程中就会遇到运行错误的情况,但又搞不懂错误在哪,从而感到崩溃且不知所措,那么Python运行时发生错误如何应对?这篇文章教你解决方法!1、了解Python运行时错误在Python中,当代码执行时出现错误,在程序运行时而不是编译时就被称为运行时错误......
  • Python学习入门,从19个语法开始!
    Python简单易学,但又博大精深。许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉。学海无涯,我们先来了解一些Python中最基本的内容。Python的特点解释型语言,无需编译即可运行提供了交互式命令行基于对象的编程思想跨平台和良好的兼容性,在Windows、Mac、Linu......
  • python内置函数:chr()、ord()使用方法及练习
    python内置函数:chr()、ord()使用方法及练习使用方法由于chr函数和ord函数经常是一起出现、一起使用的,所以我将它们放到同一篇文章。一、chrchr({需要转换的Unicode编码}),返回值是对应的字符例1:输入数字65-91,返回值是大写字母chr(65)Achr(90)Z......
  • Python中print(__doc__)作用的教程
      2、......
  • python3的django创建api通过Postman进行端口测试
    1、打开pycharm创建工程及app  创建url  创建views函数:  fromdjango.shortcutsimportrender#Createyourviewshere.fromdjango.viewsimportViewfromdjango.utils.decoratorsimportmethod_decoratorfromdjango.views.decorators.csrfimportcsrf_exemptfr......
  • python 中pyecharts模块用法
    https://zhuanlan.zhihu.com/p/111330795#:~:text=bar1%3D(Bar().add_xaxis(['1月'%2C'2月'%2C'3月'%2C'4月'%2C'5月'%2C'6月'%2C'7月'%2C'8月'%2C'9月'%2C'10月'%2C'11月......