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

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

import random
from collections import deque

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

while len(q) > 0 and q[0]%2 == 1:
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))