1. 程式人生 > >Python :用兩個棧實現佇列

Python :用兩個棧實現佇列

牛客網上的劍指 offer的線上程式設計:

題目描述

用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。
# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        # write code here
        self.stack1.append(node)
    def pop(self):
        # return xx
        if self.stack2:
            return self.stack2.pop()
        elif not self.stack1:
            return None
        else:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()


相關推薦

Python 實現佇列

牛客網上的劍指 offer的線上程式設計: 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 # -*- coding:utf-8 -*- class Solution: def __init__(self):

Python程式設計實現佇列

用兩個棧實現佇列思路: 入隊進入一個棧,從另一棧出隊 外加一個元素傳遞的方法,負責將元素從入隊棧轉移到出隊棧 入隊棧:1,2,3 出隊棧:3,2,1 # 先實現一個棧 class Stack():

【劍指offer python】面試題7實現佇列

題目連結 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 solution class Solution: def __

實現佇列

/** * 題目:用兩個棧實現佇列 * 描述:用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 * 解決方案:方法一:一個作為儲存用,一個作為彈出用 * */ public class One { Stack

劍指offer Python版 - 實現佇列

題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 思路:定義兩個棧stack1, stack2,當push元素時,將其插入進stack1,當pop元素時,若stack2為空,則將stack1中的元素依次彈出,並插入進sta

劍指 Offer - 5實現佇列

題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別 題目連結:https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6 解題思路

劍指Offer5實現佇列

思路: 1.初始化兩個棧stack1和stack2。 2.入隊:將元素append進棧stack1 3.出隊:判斷棧stack2是否為空,如果為空,則將棧stack1中所有元素pop,並append進棧stack2,棧stack2再pop出棧; 如果不為空,棧stack1直接p

《劍指offer》面試題9實現佇列

題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式appendTail 和deleteHead ,分別完成在佇列尾部插入節點和在佇列頭部刪除節點的功能。 template <typename T> class CQueue { public: CQueue(vo

劍指offer-05實現佇列

用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 思路 入隊:將元素進棧A 出隊:判斷棧A是否為空,如果為空,則將棧A中所有元素pop,並push進棧B,棧B出棧; 如果不為空,棧B直接出棧。 程式碼 import java.uti

劍指offer面試題9實現佇列佇列模擬

 題目描述: 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 思路一:有點死腦筋,每次pop後都預設下次是push操作,,,,。233主要是由於沒把握好兩個棧模擬時入隊和出隊的時機。考慮stack1和stack2的大小和入隊出隊的關係即可改

劍指offer 5實現佇列

#include <iostream> #include <stack> using namespace std; class Solution { public: void push(int node) { stackIn.push(node);

劍指Offer面試題7(Java版)實現佇列佇列實現

題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式appendTail和deletedHead,分別完成在佇列尾部插入節點和在佇列頭部刪除節點的功能。 我們通過一個具體的例子來分析該佇列插入和刪除元素的過程。首先插入一個元素a,不妨先把它插入到stack1,此時

實現佇列python

# -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack1=[] self.stack2=[] def push(self, node): # write

劍指Offer面試題6.實現佇列

一、題目:用兩個棧實現佇列 題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式appendTail和deleteHead,分別完成在佇列尾部插入結點和在佇列頭部刪除結點的功能。   原文是使用C++結合模板實現的定義,這裡我們採用C#結合泛型來實現這個佇列的定義,我們要實現的就是兩

劍指Offer-Python-實現佇列

題目: 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 知識點:棧和佇列的區別在於,棧的進出口為同一個,而佇列分出口和進口。這樣導致了棧先進後出,佇列先進先出的特點。 思路:基於佇列和棧的特點,使用兩個棧來模擬

例項2佇列——實現佇列

問題描述:用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 知識拓展:棧(Stack)和佇列(Queue)是兩種操作受限的線性表。 線性表:線性表是一種線性結構,它是一個含有n≥0個結點的有限序列,同一個線性表中的資料元素資料型別相同並

劍指offer5實現隊列

ack color generated port div isempty turn 兩個棧實現隊列 pre 題目描述: 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。 思路: 基本操作,棧是後進先出,隊列是先進先出,兩個棧正好反反得正

實現佇列 java

用兩個棧實現佇列 java 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 程式碼: import java.util.Stack; public class Solution { Stack<In

劍指offer____實現佇列

用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 class Solution { public: //佇列的特點是先進先出,棧的特點是後進先出 void push(int node) { s1.push(node);

【劍指Offer】17實現佇列

題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別 時間限制:1秒;空間限制:32768K 解題思路 由於佇列的特點是先進先出,而棧是先進後出,可以用兩個棧串聯來實現佇列:棧1先進後出,棧1出棧棧2入棧,棧2後進先出,從全域性來看實現了先進先