Dynamic12. Дан указатель \(P_1\) на вершину стека, содержащего не менее пяти элементов. Используя тип TStack (см. задание Dynamic11), описать функцию Pop(S) целого типа, которая извлекает из стека S первый (верхний) элемент, возвращает его значение и освобождает память, которую занимал извлеченный элемент (S — входной и выходной параметр типа TStack). С помощью функции Pop извлечь из исходного стека пять элементов и вывести их значения. Вывести также указатель на новую вершину стека (если результирующий стек окажется пустым, то этот указатель должен быть равен NIL).

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

import random

def Push(S,D):
S.append(D)

N = random.randrange(5,11)
print("N = ",N)
lst = [random.randrange(0,10) for i in range(0,N)]
stack = []

for i in range(0,N):
Push(stack,lst[i])

print("Stack:", stack)
try:
print("Address of the Stack's top: ",id(stack[-1]))
print("Value of the Stack's top: ",stack[-1])
except IndexError as err:
print("Stack is empty: {0}".format(err))

for i in range(0,5):
stack.pop()
print()
print("Stack pop #{0}".format(i+1))
print("Stack:", stack)
try:
print("Address of the Stack's top: ",id(stack[-1]))
print("Value of the Stack's top: ",stack[-1])
except IndexError as err:
print("Stack is empty: {0}".format(err))