我需要使用名为mirror
的函数镜像队列我已经为队列类创建了代码,但我不知道如何创建它的镜像。它需要打印出原始队列,然后反转相同的队列
任何帮助将不胜感激
我的代码:
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def is_empty(self):
return not self.items
def size(self):
return len(self.items)
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
def mirror(n):
pass
答案 0 :(得分:0)
也许你试试这个:How can I reverse a list in python
您可以使用成员函数镜像中的反转self.items列表创建新队列。
答案 1 :(得分:0)
这会奏效。您的队列由列表组成,因此您可以使用列表中的slice syntax来获取队列的反转版本。
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
self.items.append(item)
def __str__(self):
'''Allow print to be called on the queue object itself'''
return str(self.items)
def __getitem__(self, i):
'''Allow the queue object to be indexable directly'''
return self.items[i]
def mirror(q):
return q[::-1]
q = Queue()
for i in range(10):
q.enqueue(i)
print q
print mirror(q)
注意:队列追加到末尾,而不是开头。这就是堆栈的行为。
答案 2 :(得分:0)
q = ArrayQueue()
def mirror(q):
copy = ArrayQueue()
stack = ArrayStack()
while not q.is_empty():
stack.push(q.first())
copy.enqueue(q.dequeue())
while not stack.is_empty():
copy.enqueue(stack.pop())
for i in range(len(copy)):
print(copy.dequeue(),end=" ")