- Accepts items from the user and create a queue till the user enters -1
- Print the queue
- Reverse the given queue
- Print the modified queue
for example the input may be
- 1
- 2
- 3
- 4
- -1
the only thing I cannot get working is the logic around reversing the queue only using enqueue and dequeue and obviously my attempt logic is completely wrong, I'm stuck as every online page just uses a stack however I cannot use a stack.
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)
here is the Queue file
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