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
top
asstatic
make 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?
top
global or static means you can use only one stack in your program! You might want to distinguish between thenode
andlist
classes. \$\endgroup\$