Here, I am present the stack through linked list
- stack linked-list
#include<stdio.h> #include<stdlib.h> int count=0; struct node { int data; struct node *next; }*first=NULL,*temp=NULL,*newnode=NULL,*t=NULL; struct node* createnode() { int x; temp=(struct node*)malloc(sizeof(struct node)); printf("\nEnter value:"); scanf("%d",&x); if(temp!=NULL) { temp->data=x; temp->next=NULL; return temp; } else { printf("\nMemory not allocated"); return 0; } } void display() { if(first!=NULL) { for(temp=first;temp->next!=NULL;temp=temp->next) printf("%d->",temp->data); printf("%d->NULL",temp->data); } else printf("\nstack is empty"); } void push() { newnode=createnode(); count++; if(first==NULL) { first=newnode; } else { for(temp=first;temp->next!=NULL;temp=temp->next); temp->next=newnode; newnode->next=NULL; } display(); } void pop() { if(first==NULL) printf("\nUNDERFLOW"); else { for(temp=first;temp->next!=NULL;temp=temp->next); t=temp->next; temp->next=NULL; free(t); count--; } display(); } void peep() { int m,i=1; printf("\nEnter position to peep"); scanf("%d",&m); if(m>count) printf("\nEnter valid position"); else { for(temp=first;i<=count-m;i++,temp=temp->next); printf("\nValue=%d",temp->data); } } main() { int choice; while(1) { printf("\nMENU\n1.PUSH\n2.POP\n3.PEEP\n4.DISPLAY\n5.EXIT"); printf("\nEnter choice:"); scanf("%d",&choice); switch(choice) { case 1: push(); break; case 2: pop(); break; case 3: peep(); break; case 4: display(); break; case 5: exit(0); default : printf("\nEnter valid choice."); } } } |
Happy coding😆😁
Post a Comment
Hii