• 队例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] 取出

  • 相关阅读:
    linux下使用kermi续
    关于vhdl中integer消耗资源的一些讨论
    linux时间编程
    Linux下C编程文件编程
    C语言I博客作业04
    C语言I博客作业02
    C语言I博客作业02
    第一周作业
    php 面向对象
    php 面向对象封装和继承
  • 原文地址:https://www.cnblogs.com/rnanprince/p/11588359.html
Copyright © 2020-2023  润新知