void Stack::operator = (const Stack &original)
{
Stack new_copy(original);
Stack middle_node(original);
middle_node.top_node = top_node;
top_node = new_copy.top_node;
new_copy.top_node = middle_node.top_node;
}
{
Stack new_copy(original);
Stack middle_node(original);
middle_node.top_node = top_node;
top_node = new_copy.top_node;
new_copy.top_node = middle_node.top_node;
}