如何實現佇列

2021-09-09 07:57:35 字數 2671 閱讀 5152

"""

實現乙個佇列的資料結構,使其具有入佇列,出佇列,檢視佇列首尾元素,檢視佇列大小等功能。

"""# 方法一:陣列實現

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...