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

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

import random

N = random.randrange(0,10)
stack = []
for i in range(N):
D = random.randrange(-10,10)
stack.append(D)
print("Stack: ", stack)
print("Number of stack items: ", len(stack))

print()
print("Retrieving items:")
K = 0
for i in range(N):
try:
print(i+1,". Last item: ", stack[-1])
stack.pop()
K += 1
except:
print("Retrieving error")

print()
print("Number of retrieved items: ", K)
print("Stack after retrieving: ", stack)
print("Number of stack items: ", len(stack))