Stack::Stack(int first)
{
Node first_top (first, NULL);
top = &first_top;
n = 1;
}
Это неправильно, вы не можете назначить адрес локального объекта члену класса (вверху), так как локальные объекты уничтожаются при возврате функции.
Создайте узел в куче, а не в стеке, сделайте что-то вроде этого:
Stack::Stack(int first)
{
top = new Node(first, NULL);
n = 1;
}
И проясните концепцию списка ссылок и используйте ручку и бумагу, если вы можете это сделать.
Ваша операция Stack :: Push (int) кажется некорректной, проверьте, что вы забыли сделать.
Мое предложение - попытаться реализовать универсальный стек с помощью шаблона , чтобы он работал для всех типов данных.