日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 用队列实现栈

發布時間:2025/3/21 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 用队列实现栈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

| 用隊列實現棧

請你僅使用兩個隊列實現一個后入先出(LIFO)的棧,并支持普通棧的全部四種操作(push、top、pop 和 empty)。

實現 MyStack 類:

void push(int x) 將元素 x 壓入棧頂。
int pop() 移除并返回棧頂元素。
int top() 返回棧頂元素。
boolean empty() 如果棧是空的,返回 true ;否則,返回 false 。

注意:

你只能使用隊列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 這些操作。
你所使用的語言也許不支持隊列。 你可以使用 list (列表)或者 deque(雙端隊列)來模擬一個隊列 , 只要是標準的隊列操作即可。

示例:

輸入:
[“MyStack”, “push”, “push”, “top”, “pop”, “empty”]
[[], [1], [2], [], [], []]
輸出:
[null, null, null, 2, 2, false]

解釋:
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // 返回 2
myStack.pop(); // 返回 2
myStack.empty(); // 返回 False

| 題解

class MyStack:def __init__(self):# self.queue1代表主隊列 self.queue2 代表輔助隊列 # self.count 代表元素的個數 self.queue1 = []self.queue2 = []self.count = 0def push(self, x: int) -> None:# 添加數據到隊列就進主隊列self.queue1.append(x)self.count += 1def pop(self) -> int:# count 記錄隊列元素的位置 當達到最后一個位置時 彈出此元素count = 0result = Nonewhile self.queue1:count += 1if count == self.count:result = self.queue1.pop()self.count -= 1else:self.queue2.append(self.queue1.pop(0))# 當確定result 結果后 把輔助隊列中的元素 還原到主隊列中while self.queue2:self.queue1.append(self.queue2.pop(0))# 返回彈出元素的值return result# 主隊列的最后一個元素 為棧頂元素def top(self) -> int:return self.queue1[-1]# 主隊列為空 棧就為空 主隊列不為空 棧就不為空def empty(self) -> bool:return False if self.queue1 else True# Your MyStack object will be instantiated and called as such: # obj = MyStack() # obj.push(x) # param_2 = obj.pop() # param_3 = obj.top() # param_4 = obj.empty()

總結

以上是生活随笔為你收集整理的python 用队列实现栈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。