Dynamic8. Даны указатели \(P_1\) и \(P_2\) на вершины двух непустых стеков. Переместить все элементы из первого стека во второй (в результате элементы первого стека будут располагаться во втором стеке в порядке, обратном исходному) и вывести адрес новой вершины второго стека. Операции выделения и освобождения памяти не использовать.
Решение на Python 3:
import random
N = random.randrange(0,10)
stack1 = []
for i in range(N):
D = random.randrange(-10,10)
stack1.append(D)
print("Stack 1: ", stack1)
print("Number of stack 1 items: ", len(stack1))
print("id of last item (P1): ", id(stack1[-1]))
N = random.randrange(0,10)
stack2 = []
for i in range(N):
D = random.randrange(-10,10)
stack2.append(D)
print("Stack 2: ", stack2)
print("Number of stack 2 items: ", len(stack2))
print("id of last item (P2): ", id(stack2[-1]))
print()
print("Moving items from stack 1 to stack 2:")
K = 0
while stack1:
try:
D = stack1[-1]
stack2.append(D)
stack1.pop()
K += 1
print(K+1,". Moved item: ", D)
except:
print("Retrieving error")
print()
print("Stack1 after retrieving: ", stack1)
print("Number of stack 1 items: ", len(stack1))
print()
print("Stack2 after retrieving: ", stack2)
print("Number of stack 2 items: ", len(stack2))
print("id of last item (P2): ", id(stack2[-1]))