STAKLINK

Home >> Sem 2 >> Data-structur >> STAKLINK

/*  Write a Program to perform the following operation stack using linklist. */
/* PUSH, POP, ISEMPTY, ISFULL, PEEP   */
struct list
 {
   int info;
   struct list *next;
 }*start,*q,*node,*p;
#define max 4
void push();
void pop();
int isempty();
int isfull();
void peep();
void disp();
int top=-1,stack[max];
void main()
 {

   int ret,s1,choice;
   clrscr();

   start = '\0';

do
 {
   printf("\n\n1 : Push element in Stack.\n");
   printf("2 : Pop an element from stack.\n");
   printf("3 : Peep an element into stack.\n");
   printf("4 : Exit from Program.\n");
   printf("Enter your choice :  ");
   scanf("%d",&choice);

   switch(choice)
    {
     case 1:
         ret = isfull();
           if(ret!=1)
            push();
            disp();
          break;
     case 2:
         ret = isempty();
          if(ret != 1)
            pop();
            disp();
          break;
     case 3:
          ret = isempty();
           if(ret != 1)
            peep();
            disp();
          break;
     case 4:
          exit();
     default :
         printf("\n\n\t\t######## INVALID CHOICE ##########\n\n");
    }

 }while(s1);

}



int isfull()
 {
   if(top == max)
    {
     printf("\n\n\t\t####### STCK IS OVERFLOW #########\n\n");
     return 1;
    }
   else
    return 0;
}


int isempty()
 {
   if(top == -1)
    {
     printf("\n\n\t\t####### STCK IS UNDERFLOW #########\n\n");
     return 1;
    }
   else
    return 0;
}

void push()
 {
   int item;
   printf("\nEnter an Integer value : ");
   scanf("%d",&item);
   top = top + 1;

   node = (struct list *)malloc(sizeof(struct list));
   node->info = item;
   node->next = '\0';
   p = start;

   if (start == '\0')
     start = node;
   else
    {
      while(p->next != '\0')
        p = p->next;
     p->next = node;
    }

 }

void pop()
 {
   int item;
   q = start;
   p = start->next;
   while(p->next!='\0')
    {
     p = p->next;
     q = q->next;
    }
   item = p->info;

   if(p==start)
     start = '\0';

    q->next='\0';
   top = top -1;
   printf("\n\n\t\t%d is deleted\n",item);
 }


void peep()
 {
   int item,q;
   printf("\n\nEnter position : ");
   scanf("%d",&q);
   p = start;

   while(q<=top)
    {
     p = p->next;
     q++;
    }

    printf("\n\nYour selected Element is %d ",p->info);
 }

void disp()
 {

   p = start;
   printf("\n\nStack Contains : ");

   while(p!='\0')
    {
      printf("%d ",p->info);
      p = p->next;
    }
 }