在python中镜像队列

问题描述 投票:-2回答:3

我需要使用名为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
python class stack queue reverse
3个回答
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)

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


0
投票

也许您可以尝试一下:How can I reverse a list in python

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


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=" ")
© www.soinside.com 2019 - 2024. All rights reserved.