파이썬
[자료구조] Stack을 Queue로 구현하기
Mara7
2023. 5. 14. 14:32
LIST
# Que로 stack 구현
class Queue:
def __init__(self):
self.data = []
def push(self, value):
self.data.append(value)
def pop(self): # 처음 넣은 값 삭제,,
first_value = self.data.pop(0)
return first_value
def len(self):
return len(self.data)
class QueStack:
def __init__(self):
self.Queue1 = Queue()
self.Queue2 = Queue()
def push(self, value): # 값을 넣기.
self.Queue1.data.append(value)
def pop(self): # 값을 삭제하기 # 큐는 맨 처음 값부터 삭제한다.Queue1의 값들을 Queue2로 옮기기,
for i in range(self.Queue1.len()): # queue1의 길이만큼 반복하기
self.Queue2.data = [self.Queue1.pop()] + self.Queue2.data # Q2의 data는 que1의 데이터 + que2의 뎅터
first_value = self.Queue2.pop() # 첫번째 값은 마지막에 que2에 넣은 값
for i in range(self.Queue2.len()): # 다시 que1에 넣어주기
self.Queue1.data = [self.Queue2.pop()] + self.Queue1.data
return first_value # 첫번째값 출력하기
QS = QueStack()
QS.push(1)
QS.push(2)
QS.push(3)
QS.push(4)
print(QS.Queue1.data)
print(QS.pop())
print(QS.Queue1.data)
print(QS.Queue2.data)
반응형
LIST