zoukankan      html  css  js  c++  java
  • 队例queue

    题目描述

    输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

    方法一:

    def print_list_from_tail_to_head(node):
        q = LifoQueue()
        while node:
            q.put(node.val)
            node = node.next
        return q

    方法二:

    def print_list_from_tail_to_head_1(node):
        # write code here
        if not node:
            return []
    
        temp = deque()
        while node:
            temp.appendleft(node.val)
            node = node.next
    
        return temp
    

      

    Python四种类型的队例:

    Queue:FIFO 即first in first out 先进先出

    LifoQueue:LIFO 即last in first out 后进先出

    PriorityQueue:优先队列,级别越低,越优先

    deque:双边队列

    from queue import Queue,LifoQueue,PriorityQueue
    from collections import deque
    

      

    1、Queue 先进先出队列:

    #maxsize设置队列中,数据上限,小于或等于0则不限制,容器中大于这个数则阻塞,直到队列中的数据被消掉

    q = Queue(maxsize=0)
    
    #写入队列数据
    q.put(0)
    q.put(1)
    q.put(2)
    
    #输出当前队列所有数据
    print(q.queue)
    
    #删除队列数据,并返回该数据
    q.get()
    
    #输也所有队列数据
    print(q.queue)
    
    # 输出:
    # deque([0, 1, 2])
    # deque([1, 2])

    2、LifoOueue 后进先出队列:

    lq = LifoQueue(maxsize=0)
    
    #队列写入数据
    lq.put(0)
    lq.put(1)
    lq.put(2)
    
    
    #输出队列所有数据
    print(lq.queue)
    
    #删除队尾数据,并返回该数据
    lq.get()
    
    #输出队列所有数据
    print(lq.queue)
    
    #输出:
    # [0, 1, 2]
    # [0, 1]
    

      

    3、优先队列:

    pq = PriorityQueue(maxsize=0)
    
    #写入队列,设置优先级
    pq.put((9,'a'))
    pq.put((7,'c'))
    pq.put((1,'d'))
    
    #输出队例全部数据
    print(pq.queue)
    
    #取队例数据,可以看到,是按优先级取的。
    pq.get()
    pq.get()
    print(pq.queue)
    
    #输出:
    [(9, 'a')]
    

      

    4、双边队列:

    #双边队列
    dq = deque(['a','b'])
    
    #增加数据到队尾
    dq.append('c')
    
    #增加数据到队左
    dq.appendleft('d')
    
    #输出队列所有数据
    print(dq)
    
    #移除队尾,并返回
    print(dq.pop())
    
    #移除队左,并返回
    print(dq.popleft())
    
    #输出:
    deque(['d', 'a', 'b', 'c'])
    c
    d

    --------------------------------------------------------------------------------

    直接使用list,只要保证只使用
    pop() 取出
    insert(0,) 插入
    或者只使用
    append() 插入
    list[0]并且del list[0] 取出

  • 相关阅读:
    各种现代方法和技术在储集层研究中的运用
    “汇报能力”的要求和构建
    个人核心竞争力的构建
    “盐荒”子孙的悲哀
    对数据及数据库的理解
    浅谈大学综合素质培养的重要性
    我看兴趣爱好
    Access数据库连接字符串
    常用css缩略语
    中文与韩、日文混排出现在Gb2312编码的Aspx的处理方法
  • 原文地址:https://www.cnblogs.com/rnanprince/p/11588359.html
Copyright © 2011-2022 走看看