在 python 中镜像一个队列

Mirrorring a queue in python

我需要使用名为 mirror

的函数来镜像队列

我已经为队列class编写了代码,但我不知道如何创建它的镜像。需要先打印出原来的队列,然后把同一个队列倒过来

如有任何帮助,我们将不胜感激

我的代码:

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

也许你可以试试这个:How can I reverse a list in python

您可以使用成员函数镜像中的反向 self.items 列表创建新队列。

这行得通。您的队列由一个列表组成,因此您可以在列表上使用 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)

注意:队列追加到末尾,而不是开始。这就是堆栈的行为。

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=" ")