In the public_files section of the problem
statement, a class called LinkedQueue,
which implements the Queue ADT using a
singly-linked list, is defined. Extend the implementation of this class
with a new public method rotate(). This
method returns the element at the front of the queue and moves it to the
back of the queue.
For example, if q is an instance of the
class LinkedQueue that represents the
following queue
front 5, 2, -1, 3, 0, 8, 6 back
after executing the statement x q.rotate(), x will be 5 and the object q will represent the queue
front 2, -1, 3, 0, 8, 6, 5 back
Although the effect of rotate() on a non-empty queue q is the same as the combination
{\bf q.enqueue(q.dequeue())}
your implementation should be more efficient than making two separate calls.
You should also override the special method
__str__ of the class
LinkedQueue so that the contents of an
instance of this class representing a queue of integer numbers can be
printed without making any call to the public method
dequeue.
In particular, you should add the following public methods to the LinkedQueue class:
def rotate(self):
# Insert your implementation below
def __str__(self):
# In the implementation of this method, assume the queue instance
# can only contain integer numbers. This is only true in the context
# of this problem.
# Insert your implementation below
Input
5 2 -1 3 0 8 6
Output
5 2 -1 3 0 8 6 rotate returns: 5 2 -1 3 0 8 6 5