how to implementation of stacks using linked lists in c++
#include<stdio.h> #include<stdlib.h> #include<conio.h> struct node{ int data; struct node *link; }; struct node *top=NULL,*temp; void main(){ int choice,data; clrscr(); while(1){ printf("\n1.Push\n2.Pop\n3.Display\n4.Exit\n"); printf("\nEnter ur choice:"); scanf("%d",&choice); switch(choice){ case 1: temp=(struct node *)malloc(sizeof(struct node)); printf("Enter a node data :"); scanf("%d",&data); temp->data=data; temp->link=top; top=temp; break; case 2: if(top!=NULL){ printf("The poped element is %d",top->data); top=top->link; } else{ printf("\nStack Underflow"); } break; case 3: temp=top; if(temp==NULL){ printf("\nStack is empty\n"); } while(temp!=NULL){ printf("->%d->",temp->data); temp=temp->link; } break; case 4: exit(0); } } }
#include<stdio.h> #include<malloc.h> #define maxsize 10 void push(); void pop(); void display(); struct node{ int info; struct node *link; } *start=NULL, *new,*temp,*p; typedef struct node N; main(){ int ch,a; do{ printf("\t\t\tLinked stack"); printf("\n 1.Push"); printf("\n 2.Pop"); printf("\n 3.Display"); printf("\n 4.Exit"); printf("\n Enter your choice : "); scanf("%d",&ch); switch(ch){ case 1: push(); break; case 2: pop(); break; case 3: display(); break; case 4: exit(0); default: printf("\nInvalid choice"); break; } } while(ch<=3); } void push(){ new=(N*)malloc(sizeof(N)); printf("\nEnter the item : "); scanf("%d",&new->info); new->link=NULL; if(start==NULL) start=new; else{ p=start; while(p->link!=NULL) p=p->link; p->link=new; } } void pop(){ if(start==NULL) printf("\nStack is empty"); else if(start->link==NULL){ printf("\nThe deleted element is : %d",start->info); free(start); start=NULL; } else{ p=start; while(p->link!=NULL){ temp=p; p=p->link; } printf("\nDeleted element is : %d\n", p->info); temp->link=NULL; free(p); } } void display(){ if(start==NULL) printf("\nStack is empty"); else{ printf("\nThe elements are : "); p=start; while(p!=NULL){ printf("%d",p->info); p=p->link; } printf("\n"); } }
Ads