C++ контейнерный класс stack

214
11 августа 2018, 02:00
#include <cstring>
#include <iostream>
using namespace std;
template<class T> class node
{
public:
    T* data;
    node<T>* tail;
    node() {
        tail = NULL;
    }
};
template<class T> class stack
{
private:
    node<T>* header;
public:
    stack()
    {
        header = NULL;
    }
    void push(T& obj)
    {
        node<T>* n = new node<T>();
        n->tail = header;
        n->data = &obj;
        header = n;
    }

    T pop()
    {
        if (!empty())
        {
           return -1;
        }
            int temp = header-> tail;
            node <T>* = header;
            header = header->data;
            return temp;
    }
    bool empty()
    {
        return header == NULL;
    }
};

class student
{
public:
    char name[64];
    char code[32];
    int bithday;
    student()
    { }
    student(char* n, char* c, int  b)
    {
        strcpy(name, n);
        strcpy(code, c);
        bithday = b;
    }
};

int main()
{
    student s1("Ivan", "0001", 2001);
    student s2("Pert", "0002", 2002);
    student s3("Gleb", "0003", 2000);
    stack<student> s;
    s.push(s1);
    s.push(s2);
    s.push(s3);
    while (!s.empty())
    {
        student tmp = s.pop();
        cout << tmp.name << endl;
    }
    return 0;
}

не могу понять как реализовать удаление элементов в контейнере класса

Answer 1
int pop()
{
    if (!empty())
    {
        node <T>* p = header;
        header = header->tail;
        delete p;
        return 1;
    }  
    return 0;   
}

хотябы так, если хотите возвращать int а не bool, хотя возвращать ничего не нужно, вприципе это значение не будет использоваться, или будете использовать вместо empty(), тогда функция empty() не нужна

P.S. Но вы еще и имена неправильно используете, Хвост у вас предыдущий, а голова является хвостом...

READ ALSO
Неверное отображение серийного номера SSD диска

Неверное отображение серийного номера SSD диска

Мне необходимо получить серийные номера различных устройств хранения данныхНа данный момент написан код, корректно работающий с HDD, однако...

167
Как определить зависимость для androidX?

Как определить зависимость для androidX?

Скачал студию 32 канари вот хочу попробовать поработать с новой навигацией

185
Что быстрее map.containsKey(key) || map.get(key) != null

Что быстрее map.containsKey(key) || map.get(key) != null

К примеру мне нужно проверить, существует ли какие-либо данные в map, если существуют, то вернуть иначе загрузить из базы данных

176
Ошибка: illegal start of expression

Ошибка: illegal start of expression

Возникает ошибка при создании: (9:9)illegal start of expression

193