파이썬 : 두 개의 스택으로 큐 구현

두 개의 스택이있는 대기열을 구현합니다. 큐의 선언은 다음과 같으며, 큐의 끝에 정수를 삽입하고 큐의 선두에 정수를 삭제하는 기능을 각각 완료하는 appendTail과 deleteHead의 두 가지 함수를 구현하십시오. (큐에 요소가없는 경우 deleteHead 작업은 -1을 반환합니다.)

스택 1은 새 요소를 저장하는 데 사용되고 스택 2는 이전 요소를 팝업하는 데 사용됩니다.
appendTail : 새 요소를 스택 1에 직접 푸시
deleteHead : 스택 2의 요소를 직접 팝; 스택 2가 비어있는 경우 스택 1의 모든 요소는 스택 2로 푸시됩니다. 스택 1도 비어 있으면 -1을 반환합니다.

class ST_Queue():
    def __init__(self):
        self.s1=[]
        self.s2=[]
    def appendTail(self,value):
        self.s1.append(value)
    def deleteHead(self):
        if len(self.s2)==0:
            if len(self.s1)==0:
                return -1
            while len(self.s1)>0:
                self.s2.append(self.s1.pop())
        return self.s2.pop()

if __name__=="__main__":
    tes=ST_Queue()
    for i in range(5):
        tes.appendTail(i)
    print("s1:",tes.s1)
    print("s2:",tes.s2)

    tes.deleteHead()
    tes.deleteHead()
    print("s1:",tes.s1)
    print("s2:",tes.s2)

복잡성 분석 :
시간 복잡성 :
대기열에 넣기 : O (1) 대기열에서
빼기 : O (1)
공간 복잡성 :
대기열에 넣기 : O (n) 대기열에서
빼기 : O (1)

추천

출처blog.csdn.net/liulanba/article/details/115163892