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.
- Is this good approach to coding?
- Will making
topasstaticmake it a better coding practice? - 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?
topglobal or static means you can use only one stack in your program! You might want to distinguish between thenodeandlistclasses. \$\endgroup\$