1. 程式人生 > >劍指 offer_第五題_用兩個棧實現佇列

劍指 offer_第五題_用兩個棧實現佇列

平臺

牛客網

語言

python2.7.3

作業內容

題目描述

用兩個棧來實現一個佇列, 完成佇列的 Push 和 Pop 操作。 佇列中的元素為 int 型別。

題目理解

什麼是棧?

棧(有時稱為 “後進先出棧”)是一個項的有序集合,這種排序原則有時被稱為 LIFO(後進先出), 其中新增移除新項總髮生在同一端。這一端通常稱為 “頂部”。與頂部對應的端稱為 “底部”。

什麼是佇列?

佇列是項的有序結合,其中新增新項的一端稱為隊尾,移除項的一端稱為隊首。這種排序原則有時被稱為 FIFO(先進先出)當一個元素從隊尾進入佇列時,一直向隊首移動,直到它成為下一個需要移除的元素為止。

push:將元素放進隊尾

pop: 將隊頂的元素刪除,並返回

解題思路

定義棧

定義 push 和 pop 函式

程式

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []  #定義兩個stack,
        self.stack2 = []
    def push(self, node):        
        self.stack1.append(node) #往佇列中新增元素,將元素放進隊尾
    def pop(self): # 沒看懂啊
        
        if len(self.stack2):
            return self.stack2.pop()
        while(self.stack1):
            self.stack2.append(self.stack1.pop())
        return self.stack2.pop()