template <class T>
class Node{
private:
T data;
Node<T> *ptr;
public:
void set_data(T parametre){
data = parametre;
}
void set_ptr(Node<T> *ptr){
this->ptr = ptr;
}
Node<T> * get_ptr(void){
return ptr;
}
T get_data(void){
return data;
}
};
template <class Type>
class Stack{
private:
Node<Type> *head;
public:
Stack(void){
head = 0;
}
Stack<Type> & push(Type parametre){
if(head == 0){
head = new Node<Type>;
head->set_data(parametre);
head->set_ptr(0);
}
else{
Node<Type> *new_ptr = new Node<Type>;
new_ptr->set_data(parametre);
new_ptr->set_ptr(head);
head = new_ptr;
}
return *this;
}
Type pull(void){
Type pulled_value = head->get_data();
Node<Type> *tmp_ptr = head;
head = head->get_ptr();
delete [] tmp_ptr;
return pulled_value;
}
void print(void){
Node<Type> *tracer = head;
while(tracer != NULL){
cout<<tracer->get_data()<<endl;
tracer = tracer->get_ptr();
}
}
};
I tried to implement a stack, but i am not sure whether it fits into the concepts of OOP. Could you please inform me about the good and bad points of the code?