Dynamic11. Дан указатель \(P_1\) на вершину стека (если стек пуст, то \(P1 = NIL\)). Также дано число N (> 0) и набор из N чисел. Описать тип TStack — запись с одним полем Top типа PNode (поле указывает на вершину стека) — и процедуру Push(S, D), которая добавляет в стек S новый элемент со значением D (S — входной и выходной параметр типа TStack, D — входной параметр целого типа). С помощью процедуры Push добавить в исходный стек данный набор чисел (последнее число будет вершиной стека) и вывести адрес новой вершины стека.

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

import random

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

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

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

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))