第3題 兩個佇列生成乙個棧

2022-02-16 17:04:18 字數 1044 閱讀 9974

想要實現兩個佇列生成乙個棧,需要先了解佇列和棧的特性:

使用兩個佇列生成乙個棧的實現思路為:

**實現如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import queue

class stack(object):

def __init__(self):

self.master_queue = queue.queue()

self.minor_queue = queue.queue()

def push(self, value):

"""入棧

:param value:

:return:

"""self.master_queue.put(value)

def pop(self):

"""出棧

:return:

"""if self.master_queue.qsize() == 0:

return none

while true:

if self.master_queue.qsize() == 1:

value = self.master_queue.get()

break

self.minor_queue.put(self.master_queue.get())

self.master_queue, self.minor_queue = self.minor_queue, self.master_queue

return value

obj = stack()

obj.push('武沛齊')

obj.push('alex')

obj.push('肖峰')

print(obj.pop())

print(obj.pop())

print(obj.pop())

兩個佇列生成乙個棧

package佇列 兩個佇列實現乙個棧 思路 佇列1和佇列2在任意時刻至少有乙個為空,即如果有元素,所有元素只能在乙個佇列中。當有元素需要插入時,將元素插入到 空佇列 中,並將另一非空佇列的所有元素全部轉移到該佇列中,於是,插入的元素新增到了對列的最前面 authoradministrator pu...

兩個棧模擬乙個佇列 兩個佇列模擬乙個棧

解題思路 插入操作在stack1中進行,刪除操作在stack2中進行,如果stack2為空,則將stack1中的所有元素轉移到stack2中。include include includeusing namespace std template class cqueue 建構函式 template ...

兩個棧實現乙個佇列 兩個佇列實現乙個棧

這兩個題的思路比較相似。棧的特點是 先進後出 佇列的特點是 先進先出 不要怕!用兩個棧實現乙個佇列很簡單 再將top元素push到stack 2中,然後將stack 1 pop一次直到stack 1剩下最後乙個元素,這個就是最先push進去的,我們把它pop掉就可以了,同理,我們求queue的fro...