#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;
}
не могу понять как реализовать удаление элементов в контейнере класса
int pop()
{
if (!empty())
{
node <T>* p = header;
header = header->tail;
delete p;
return 1;
}
return 0;
}
хотябы так, если хотите возвращать int а не bool, хотя возвращать ничего не нужно, вприципе это значение не будет использоваться, или будете использовать вместо empty(), тогда функция empty() не нужна
P.S. Но вы еще и имена неправильно используете, Хвост у вас предыдущий, а голова является хвостом...
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости