首页 > 其他 > 详细

栈与队列

时间:2019-03-26 19:54:19      阅读:183      评论:0      收藏:0      [点我收藏+]

一,栈与队列的基础知识

  1. 栈(stacks)是一种只能通过访问其一端实现数据储存与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征。

  2. 队列(queue) 是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删除只能在另一端进行。能够增加元素的队列一端称为队尾,可以删除元素的队列一端则称为队首  

  3. 队列是线程间最常用的交换数据的形式。在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换的时候,队列就出现了,队列可以完美解决线程间的数据交换,保证线程间数据的安全性和一致性。

 

二、Python数据结构:

  1.  队列

      队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。先进先出(First-In-First-Out,FIFO)的数据结构。 队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货店里排队的顾客(也就是有顺序的储存,先来先走)

技术分享图片

 

技术分享图片
 from multiprocessing import Queue
from queue import Queue
 
# 创建一个长度为5的队列
q = Queue(5)
 
# 判队空
print(q.empty())
# 入队:向队列中添加元素
q.put(1)
q.put("abc")
q.put([1, 2, 3])
q.put({"a": 123})
q.put((1, 2))
# 判队满
print(q.full())
# 量队
print(q.qsize())
 
# 出队:从队列中取出元素
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
# 判断队空
print(q.empty())
# 量队
print(q.qsize())
# 非阻塞入队
q.put_nowait(6)
# 非阻塞出队
print(q.get_nowait())


# 如果取完了队列,就会处于阻塞状态,等待进来的值
队列常用方法

  2. 栈

     栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。咖啡厅内的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞在这一摞盘子的最上面。

 技术分享图片

 

技术分享图片
from queue import LifoQueue
 
# 定义一个5长度的栈
s = LifoQueue(5)
# 进栈:向栈中添加元素
s.put(1)
s.put(2)
s.put(3)
s.put(4)
s.put(5)
# 判栈满
print(s.full())
# 量栈
print(s.qsize())
 
# 退栈:从栈中取出元素
print(s.get())
print(s.get())
print(s.get())
print(s.get())
print(s.get())
 
# 判栈空
print(s.empty())
# 量栈
print(s.qsize())

# 没有也会处于阻塞的状态
栈的常用方法

 

栈与队列

原文:https://www.cnblogs.com/double-W/p/10602912.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!