zoukankan      html  css  js  c++  java
  • 栈与队列

    一,栈与队列的基础知识

      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())
    
    # 没有也会处于阻塞的状态
    栈的常用方法
  • 相关阅读:
    noi.ac 集合
    NOI2019 SX 模拟赛 no.5
    带花树草解
    UR#13 SRAND
    【51nod1847】 奇怪的数学题
    ●POJ 3237 Tree
    ●BZOJ 2049 [Sdoi2008]Cave洞穴勘测
    ●BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊
    ●POJ 2983 Is the Information Reliable?
    ●POJ 3378 Crazy Thairs
  • 原文地址:https://www.cnblogs.com/double-W/p/10602912.html
Copyright © 2011-2022 走看看