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

Решение на 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)
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))

D = random.randrange(1,11)
print()
print("D = ",D)
q.append(D)
print("First item removed: ", 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))