兩個佇列實現一個棧結構
阿新 • • 發佈:2018-12-29
# 思路:兩個佇列,佇列1只負責壓棧,佇列2只負責出棧 class Two_queue(object): def __init__(self): self._oneli=[] self._twoli=[] def entrance(self,item): '''佇列模擬進棧''' self._oneli.append(item) def popup(self): '''佇列模擬出棧''' if len(self._oneli)==0: return None while len(self._oneli)!=1: # 將佇列1的元素彈出給佇列2,留下一個元素用來彈出 # 因為最終彈出的是後進的,所以從頭部彈出 self._twoli.append(self._oneli.pop(0)) # 交換佇列1和佇列2的位置 self._oneli,self._twoli=self._twoli,self._oneli return self._twoli.pop(0) if __name__ == '__main__': stacks=Two_queue() stacks.entrance(1) stacks.entrance(2) stacks.entrance(3) stacks.entrance(4) stacks.entrance(5) print(stacks.popup()) print(stacks.popup()) print(stacks.popup()) print(stacks.popup()) print(stacks.popup())