Here, I am present the stack through linked list
stack linked-list in c

  • 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

أحدث أقدم