隊例queue

題目描述

輸入一個鏈表,按鏈表從尾到頭的順序返回一個ArrayList。node

方法一:python

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

方法二:app

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 先進先出code

LifoQueue:LIFO 即last in first out 後進先出blog

PriorityQueue:優先隊列,級別越低,越優先隊列

deque:雙邊隊列get

 

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

  

一、Queue 先進先出隊列:

#maxsize設置隊列中,數據上限,小於或等於0則不限制,容器中大於這個數則阻塞,直到隊列中的數據被消掉it

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])

 

二、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]

  

三、優先隊列:

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')]

  

四、雙邊隊列:

#雙邊隊列
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

--------------------------------------------------------------------------------io

 

 

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

ast

相關文章
相關標籤/搜索