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

2022-07-21 23:30:36 字數 1361 閱讀 1311

'''

棧:先進後出

佇列:先進先出

'''

'''

思路兩個棧實現乙個佇列 思路:兩個棧(都是先進後出),push新增資料的時候,將data資料push到stack1 中,pop資料的時候,先判斷stack2種是否有資料

如果有資料的話,直接pop() stack2中的資料(因為pop是直接彈出最後乙個資料),如果stack2中沒有資料,則將stack1中的資料,push到stack2種去

'''

class

stacktoqueue:

def__init__

(self):

self.stack1=

self.stack2=

defpush(self,data):

'''push資料到stack1

:return:

'''

defpop(self):

if len(self.stack2)==0 and len(self.stack1)==0:

return

elif len(self.stack2)==0:

while len(self.stack1)>1:

return

self.stack2.pop()

s=stacktoqueue()

思路:佇列是先進先出,棧是先進後出

元素入佇列a

判斷如果佇列a只有乙個元素,則直接出隊。否則,把隊a中的元素出隊併入隊b,直到隊a中只有乙個元素,再直接出隊。為了下一次繼續操作,互換隊a和隊b。

class

queuetostack:

def__init__

(self):

self.queue1=

self.queue2=

#元素push進入queue1

defpush(self,data):

defpop(self):

if len(self.queue1)==0:

return

none

while len(self.queue1)!=1:

#

#交換1和2 此時 ,queue1裡面是有資料的,而queue2 是沒有資料,那麼下次pop的時候,還是會while 將queue1的資料全部新增到

#queue2 中,那queue2 將保持最先進入的資料在列表的最後,最後進入的資料在列表的第0項 所以這裡應該是這麼理解的。

self.queue1,self.queue2=self.queue2,self.queue1

return self.queue2.pop()

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

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

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

1 兩個棧實現乙個佇列 入隊時,直接壓入stack1中。出隊時,判斷stack2是否為空,如果stack2為空,則將stack1中的元素倒入stack2中,否則直接彈出stack2中的元素。入隊操作 void enqueue stack s1,stack s2,int m 出隊操作 void deq...

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

方法一 public class main 出棧操作 public int deletehead while stack1.isempty return stack2.pop 方法二 public class main public int deletehead throws exception i...