Stacks are linear data structures. This means that their contexts are stored in what looks like a line (although vertically). This linear property, however, is not sufficient to discriminate a stack from other linear data structures. For example, an array is a sort of linear data structure in which you can access any element directly. In contrast, in a stack, you can only access the element at its top. In a stack Last thing In is the First thing Out. Thus, we say that a stack enforces LIFO order.
One disadvantage of implementing stack using an array is wastage of space. Most of the times most of the array is left unused. A better way to implement stack is by using a linked list. By using a single linked list to implement a stack there is no wastage of space.
/* A simple implementation of linked list in C plus plus (CPP/C++) */ /* Compiler used: g++ */ #include<iostream> using namespace std; struct node{ int data; node *next; }; //This function pushes data(node) to the stack node * push(node*,node*); //This function pops data (node) and returns pointer to the poped node node * pop(node*); //This function shows the stack void show_stack(node*); ///These two global variables will help us track the start and end of the list node *f,*l; main() { int i,ch; f=l=NULL; cout<<"\t 1 to push"<<endl; cout<<"\t 2 to pop"<<endl; cout<<"\t 3 to show stack"<<endl; cout<<"\t 0 to exit"<<endl; while(1) { cout<<"Enter your choice:"; cin>>ch; switch(ch) { case 1: { if(f==NULL) l=f=push(f,l); else l=push(f,l); break; } case 2: { cout<<"popped:"<<pop(f)->data<<endl; break; } case 3: { show_stack(f); break; } case 0: break; default: cout<<"Please enter a proper choice"<<endl;break; } if(ch==0) break; } } node * push(node *f,node *l) { node *n; n=new node; cout<<"Enter data:"; cin>>n->data; n->next=NULL; if(f==NULL) {f=l=n;return f;} else { l->next=n; l=n;return l; } } void show_stack(node *f) { cout<<"showing data"<<endl; node *guest=f; while(guest!=NULL) { cout<<"\t"<<guest->data<<endl; guest=guest->next; } } node * pop(node *f) { node *guest,*lb; guest=lb=f; while(guest->next!=NULL) { lb=guest; guest=guest->next; } lb->next=NULL; l=lb; return guest; }Download the program: Implementation of stack using a single linked list
wonderful explanation… !
Yes …good one !thanks!
thank you coud send me any other exampel of double and single linked list
It’s awesome working fine nice concept
good and simply understand this prgm…..thanks
gud & easy code 2 remember…..
thanxxxxx 2 the code maker of this program…..