Python 實現一個可以在隊首、隊中和隊尾進行 push 和 pop 操作的佇列程式
假設,我們被要求實現一個可以在隊首、隊中和隊尾進行 push 和 pop 操作的佇列。
我們需要為這三種情況分別實現一對 push 和 pop 函式。還需要實現另一個函式,用於在給定時間顯示完整的佇列。
所以,如果輸入如下:
push_from_back(10)
push_from_back(20)
push_from_front(30)
push_from_middle(40)
push_from_front(50)
show_queue()
pop_from_back()
show_queue()
pop_from_front()
show_queue()
pop_from_middle()
show_queue(),
那麼輸出將是 [50, 30, 40, 10, 20]
[50, 30, 40, 10]
[30, 40, 10]
[30, 10]
為了解決這個問題,我們將遵循以下步驟:
array := 佇列的陣列表示
定義一個函式 push_from_front() 。它將接收一個值
將值插入到陣列的第 0 個位置
定義一個函式 push_from_middle() 。它將接收一個值
將值插入到陣列的 (陣列大小) / 2 位置
定義一個函式 push_from_back() 。它將接收一個值
將值插入到陣列的末尾
定義一個函式 pop_from_front() 。
如果陣列不為空,則刪除並返回陣列的第一個元素
定義一個函式 pop_from_middle() 。
刪除並返回陣列 (陣列長度 - 1) / 2 位置的元素
定義一個函式 pop_from_back() 。
刪除並返回陣列的最後一個元素
定義一個函式 show_queue() 。它不接收任何輸入
返回陣列
示例
讓我們看看下面的實現,以獲得更好的理解
class Solution():
def __init__(self):
self.array = []
def push_from_front(self, value):
self.array.insert(0, value)
def push_from_middle(self, value):
self.array.insert(len(self.array) // 2, value)
def push_from_back(self, value):
self.array.append(value)
def pop_from_front(self):
return (self.array or [-1]).pop(0)
def pop_from_middle(self):
return (self.array or [-1]).pop((len(self.array) - 1) // 2)
def pop_from_back(self):
return (self.array or [-1]).pop()
def show_queue(self):
return self.array
ob = Solution()
ob.push_from_back(10)
ob.push_from_back(20)
ob.push_from_front(30)
ob.push_from_middle(40)
ob.push_from_front(50)
print(ob.show_queue())
ob.pop_from_back()
print(ob.show_queue())
ob.pop_from_front()
print(ob.show_queue())
ob.pop_from_middle()
print(ob.show_queue())輸入
ob = Solution() ob.push_from_back(10) ob.push_from_back(20) ob.push_from_front(30) ob.push_from_middle(40) ob.push_from_front(50) print(ob.show_queue()) ob.pop_from_back() print(ob.show_queue()) ob.pop_from_front() print(ob.show_queue()) ob.pop_from_middle() print(ob.show_queue())
輸出
[50, 30, 40, 10, 20] [50, 30, 40, 10] [30, 40, 10] [30, 10]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP