我们可以为队列类添加一个方法,该方法使用两个栈来实现队列中的原始和反转的元素。
首先,我们需要定义两个栈,一个用于存储原始元素,一个用于存储反转的元素。
接下来,我们可以使用传统的队列操作通过在队列中添加元素来填充原始栈。然后,我们可以使用一个while循环来弹出原始栈中的元素,并将它们推到反转的栈中。
最后,我们可以使用一个while循环来遍历原始栈和反转的栈,并将它们放在一个字符串中。
以下是示例代码:
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return not bool(self.items)
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
return self.items.pop(0)
def size(self):
return len(self.items)
def show(self):
orig_stack = []
rev_stack = []
# Fill original stack
for item in self.items:
orig_stack.append(item)
# Pop and push to reverse stack
while orig_stack:
rev_stack.append(orig_stack.pop())
# Print original and reversed items
result = "Original: " + " ".join(str(x) for x in self.items) + "\n"
result += "Reversed: " + " ".join(str(x) for x in rev_stack) + "\n"
print(result)
q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.enqueue(4)
q.enqueue(5)
q.show()
这个函数将输出:
Original: 1 2 3 4 5
Reversed: 5 4 3 2 1