#python: use stack to create queue
class Queue(object):
def __init__(self,):
self.stack = [] #stack.pop and stack.append is a stack
def print_queue(self, ):
tmp_stack = []
while self.stack:
item = self.stack.pop()
tmp_stack.append(item)
print(f"- {item}")
while tmp_stack:
self.stack.append(tmp_stack.pop())
def push(self, item):
temp_stack = []
while self.stack:
temp_stack.append(self.stack.pop())
self.stack.append(item)
while temp_stack:
self.stack.append(temp_stack.pop())
def pop(self,):
tmp_stack = []
if not self.stack:
return self.stack.pop()
while self.stack:
last_item = self.stack.pop()
tmp_stack.append(last_item)
tmp_stack.pop() #pop the last item
print(f"tmp {tmp_stack}")
while tmp_stack:
self.stack.append(tmp_stack.pop())
return last_item
q = Queue()
q.push(1)
q.push(2)
q.push(3)
print(q.pop())
q.print_queue()