реализация стека на с++
#include <iostream>
using namespace std;
struct elem {
int value;
elem* next;
elem*& head;
elem*& tail;
};
elem* createelem(int x)
{
elem* p;
p->value = x;
p->next = NULL;
return p;
}
void addinemptylist(elem*& head, elem*& tail, int x)
{
head = createelem(x);
tail = head;
}
elem* push(elem* head, int x)
{
elem* p = createelem(x);
p->next = head;
head = p;
return head;
}
elem* pop(elem* head)
{
elem* p = head;
head = head->next;
delete p;
return head;
}
int main()
{
int i = 0;
elem p1, p2;
while (i != 5) {
int a;
cin >> a;
p1.push(a);
i++;
}
while (!p1.empty())
{
p2.push(p1.top());
p1.pop();
}
cout << "Head of p2 is " << p2.top() << endl;
return (0);
}
Хочу реализовать стек через динамические структуры,но у меня не очень получается.Мне нужно сделать еще функцию top() и реализовать в мейне программу:переместить элементы из первого стека во второй так,чтоб элементы второго стека располагались в обратном порядке.Помогите доделать программу,делал все на основе конспектов,поэтому не особо что-то получается.