Dynamic19. Дано число N (> 0) и указатели \(P_1\) и \(P_2\) на начало и конец непустой очереди. Извлечь из очереди N начальных элементов и вывести их значения (если очередь содержит менее N элементов, то извлечь все ее элементы).  Вывести также новые адреса начала и конца очереди (для пустой очереди дважды вывести NIL). После извлечения элементов из очереди освобождать память, которую они занимали.

Решение на Python 3:

import random
from collections import deque

N = random.randrange(0,10)
q = deque([random.randrange(1,11) for i in range(0,N)])
print("Queue: ", q)

N = random.randrange(0,10)
print("N = ", N)

for i in range(0,N):
if len(q) > 0:
q.popleft()

print()
print("Queue: ", q)
try:
print("id of the first item: ",id(q[0]))
except IndexError as err:
print("NIL: {0}".format(err))
try:
print("id of the last item: ",id(q[-1]))
except IndexError as err:
print("NIL: {0}".format(err))