реализация стека на с++

#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() и реализовать в мейне программу:переместить элементы из первого стека во второй так,чтоб элементы второго стека располагались в обратном порядке.Помогите доделать программу,делал все на основе конспектов,поэтому не особо что-то получается.


Ответы (0 шт):