I have used the following code for a stack implementation. The top keeps track of the topmost node of the stack. Now since top is a data member of the node function, each node created will have a top member, which ideally we wouldn't want.
Firstly, is this good approach to coding?
Secondly, will making top as static make it a better coding practice?
Or should I have a global declaration of top?
#include<iostream>
using namespace std;
class node
{
int data;
node *top;
node *link;
public:
node()
{
top=NULL;
link=NULL;
}
void push(int x)
{
node *n=new node;
n->data=x;
n->link=top;
top=n;
cout<<"Pushed "<<n->data<<endl;
}
void pop()
{
node *n=new node;
n=top;
top=top->link;
n->link=NULL;
cout<<"Popped "<<n->data<<endl;
delete n;
}
void print()
{
node *n=new node;
n=top;
while(n!=NULL)
{
cout<<n->data<<endl;
n=n->link;
}
delete n;
}
};
int main()
{
node stack;
stack.push(5);
stack.push(7);
stack.push(9);
stack.pop();
stack.print();
}
Any other suggestions welcome. I have also seen codes where there are two classes, where the second one has the top member. What about this?
Thanks. :)