棧 先進後出(filo)
佇列 先進先出(fifo)
classmyqueue: # 兩棧模擬佇列
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)
classmystack: # 用兩個佇列模擬棧
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都要輸出相應的結果。輸入格式 第一行包含整...