2015-05-04 45 views
-2

我需要镜像队列使用函数调用镜像在python中镜像队列

我已经为队列类的代码,但我不知道如何创建它的镜像。它需要打印出原来的队列,然后在同一队列逆转

任何帮助,将不胜感激

我的代码:

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

堆栈类的相关性是什么? –

回答

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) 

注:队列追加到结尾,而不是开始。这是一个堆栈的行为。