輸入一個鏈表,按鏈表從尾到頭的順序返回一個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
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
#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])
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