python兩個隊列實現一個棧和兩個棧實現一個隊列


1.兩個棧實現一個隊列

 兩個棧stack1和stack2, push的時候直接push進stack1,pop時需要判斷stack1和stack2中的情況。如果stack2不為空的話,直接從stack2中pop,如果stack2為空,把stack1中的值push到stack2中,然后再pop stack2中的值。

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 len(self.stack1) == 0 and len(self.stack2) == 0:
            return 
        elif len(self.stack2) == 0:
            while len(self.stack1) > 0:
                self.stack2.append(self.stack1.pop())
           
        return self.stack2.pop()

2.兩個隊列實現一個棧

進棧:元素入隊列A

出棧:判斷如果隊列A只有一個元素,則直接出隊。否則,把隊A中的元素出隊並入隊B,直到隊A中只有一個元素,再直接出隊。為了下一次繼續操作,互換隊A和隊B。

class Stock:
    def __init__(self):
        self.queueA=[]
        self.queueB=[]
    def push(self, node):
        self.queueA.append(node)
    def pop(self):
        if len(self.queueA)==0:
            return None
        while len(self.queueA)!=1:
            self.queueB.append(self.queueA.pop(0))
        self.queueA,self.queueB=self.queueB,self.queueA #交換是為了下一次的pop
        return self.queueB.pop()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM