用棧模擬佇列和佇列模擬棧

2022-07-30 02:24:11 字數 1297 閱讀 8566

棧 先進後出(filo)

佇列 先進先出(fifo)

class

myqueue: # 兩棧模擬佇列

def__init__

(self):

self.input =

self.output =

#進佇列

defpush(self, x):

#出佇列

defpop(self):

self.peek()

return

self.output.pop()

defpeek(self):

ifnot

self.output: #output為空時,將input中的數倒入output

while

self.input:

return self.output[-1] #返回佇列頂端的數

defis_empty(self):

return

not self.output and

notself.input

obj =myqueue()

obj.push(1)

obj.push(2)

obj.push(3)

#peek = obj.peek()

num =obj.pop()

print(num)

class

mystack: # 用兩個佇列模擬棧

def__init__

(self):

self.s1 =

self.s2 =

self.num =0 # 標誌佇列元素

defpush(self, x):

self.num =x

defpop(self):

ifself.s2:

for _ in range(len(self.s2)-1):

self.num =self.s2.pop(0)

return

self.s2.pop()

else

:

for _ in range(len(self.s1)-1):

self.num =self.s1.pop(0)

return

self.s1.pop()

deftop(self):

return

self.num

defis_empty(self):

return

not self.s1 and

not self.s2

雙棧模擬佇列

雙棧模擬佇列 利用兩個棧 s1 s2 模擬乙個佇列 如客戶佇列 時,如何用棧的運算實現佇列的插入 刪除運算。使用演算法描述。思路 include include include using namespace std define max 1024 define elemtype intstack ...

線性儲存模擬棧和佇列

一般所謂的線性儲存基本是就是陣列和動態分配的儲存空間,在模擬棧和佇列的時候,使用乙個迭代器作為棧頂或者隊首隊尾,這個迭代器的賦值比較講究,在初始化的時候賦值為 1最為方便,既便於判空又便於儲存。在插入的時候使用陣列stack 和迭代器i,插入元素element,stack i element 這樣,...

棧和佇列的模擬模板

棧 模板題 acwing 828.模擬棧 實現乙個棧,棧初始為空,支援四種操作 1 push x 向棧頂插入乙個數x 2 pop 從棧頂彈出乙個數 3 empty 判斷棧是否為空 4 query 查詢棧頂元素。現在要對棧進行m個操作,其中的每個操作3和操作4都要輸出相應的結果。輸入格式 第一行包含整...