STAKLINK by dizydiz

VIEWS: 64 PAGES: 3

More Info
									/* 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;
     }
}

								
To top