在 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=" ")
我需要使用名为 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=" ")