"""
實現乙個佇列的資料結構,使其具有入佇列,出佇列,檢視佇列首尾元素,檢視佇列大小等功能。
"""# 方法一:陣列實現
class myqueue1:
def __init__(self):
self.arr =
self.front = 0
self.rear = 0
# 判斷佇列是否為空
def isempty(self):
return self.front == self.rear
# 返回佇列的大小
def size(self):
return self.rear - self.front
# 返回佇列首元素
def getfront(self):
if self.isempty():
return none
else:
return self.arr[self.front]
# 返回佇列尾元素
def getback(self):
if self.isempty():
return none
else:
return self.arr[self.rear - 1]
# 刪除佇列頭元素
def dequeue(self):
if self.isempty():
self.front += 1
else:
print('佇列已經為空')
# 把新元素加入佇列尾
def enqueue(self, item):
self.rear += 1
# 方法二:鍊錶實現
class lnode:
def __init__(self):
self.data = none
self.next = none
class myqueue2:
# 分配頭結點
def __init__(self):
self.phead = none
self.pend = none
# 判斷佇列是否為空,如果為空返回true,否則返回false
def empty(self):
if self.phead is none:
return true
else:
return false
# 獲取佇列中元素的個數
def size(self):
size = 0
p = self.phead
while p is not none:
p = p.next
size += 1
return size
# 入佇列:把元素e加到佇列尾
def enqueue(self, e):
p = lnode()
p.data = e
if self.phead is none:
self.phead = self.pend = p
else:
self.pend.next = p
self.pend = p
# 出佇列, 刪除佇列首元素
def dequeue(self):
if self.phead is none:
print('出佇列失敗, 佇列已經為空')
self.phead = self.phead.next
if self.phead is none:
self.phead = none
# 取得佇列首元素
def getfront(self):
if self.phead is none:
print('獲取佇列首元素失敗, 佇列已經為空')
return none
return self.phead.data
# 取得佇列尾元素
def getback(self):
if self.pend is none:
print('獲取佇列尾元素失敗, 佇列已經為空')
return none
return self.pend.data
if __name__ == '__main__':
queue = myqueue1()
queue.enqueue(1)
queue.enqueue(2)
print('佇列頭元素為:' + str(queue.getfront()))
print('佇列尾元素為:' + str(queue.getback()))
print('佇列大小為:' + str(queue.size()))
queue = myqueue2()
queue.enqueue(1)
queue.enqueue(2)
print('佇列頭元素為:' + str(queue.getfront()))
print('佇列尾元素為:' + str(queue.getback()))
print('佇列大小為:' + str(queue.size()))
執行結果如下:
佇列頭元素為:1
佇列尾元素為:2
佇列大小為:2
佇列頭元素為:1
佇列尾元素為:2
佇列大小為:2
RabbitMQ如何實現延遲佇列?
延遲佇列儲存的物件肯定是對應的延遲訊息,所謂 延遲訊息 是指當訊息被傳送以後,並不想讓消費者立即拿到訊息,而是等待指定時間後,消費者才拿到這個訊息進行消費。場景一 在訂單系統中,乙個使用者下單之後通常有30分鐘的時間進行支付,如果30分鐘之內沒有支付成功,那麼這個訂單將進行一場處理。這是就可以使用延...
Kafka Kafka延遲佇列如何實現
什麼是延遲佇列?延遲佇列儲存的是對應的延遲訊息,所謂 延遲訊息 是指當訊息被傳送以後,並不想讓消費者立刻拿到訊息,而是等待特定時間後,消費者才能拿到這個訊息進行消費。基於訊息的延遲 指為每條訊息設定不同的延遲時間,那麼每當佇列中有新訊息進入的時候就會重新根據延遲時間排序,當然這也會對效能造成極大的影...
如何用棧實現佇列功能以及如何用佇列實現棧功能
棧實現佇列的基本思路 構造兩個棧,其中乙個用來存放存進來的資料,另外乙個用來倒置其中的資料實現輸出。public static class twostacksqueue public void add int pushint public intpoll else if stackpop.empty...