- 接受用户的项目并创建一个队列,直到用户输入 -1
- 打印队列
- 反转给定的队列
- 打印修改后的队列
例如输入可能是
- 1
- 2
- 3
- 4
- -1
我唯一无法工作的是仅使用入队和出队来反转队列的逻辑,显然我的尝试逻辑完全错误,我被卡住了,因为每个在线页面都只使用一个堆栈但是我不能使用堆栈。
from Queue import Queue
def reverseQueueFirstKElements(k, queue):
for i in range(k):
if queue is None:
return
temp = queue.dequeue()
queue.enqueue(temp)
node = queue.list.head
print(node.data)
if __name__ == '__main__':
queue = Queue()
nums = 0
k = 0
while nums != -1:
nums = int(input())
if nums == -1:
break
else:
queue.enqueue(nums)
k += 1
node = queue.list.head
while node is not None:
print(node.data)
node = node.next
reverseQueueFirstKElements(k, queue)
这是队列文件
from Node import Node
from LinkedList import LinkedList
class Queue:
def __init__(self):
self.list = LinkedList()
def enqueue(self, new_item):
# Create a new node to hold the item
new_node = Node(new_item)
# Insert as list tail (end of queue)
self.list.append(new_node)
def dequeue(self):
# Copy data from list's head node (queue's front node)
dequeued_item = self.list.head.data
# Remove list head
self.list.remove_after(None)
# Return the dequeued item
return dequeued_item