SAADQUAMER

Stack

Oct 13th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define CAPACITY 100
  5. struct node
  6. {
  7.     int data;
  8.     struct node *next;
  9. } *top;
  10.  
  11. int size = 0;
  12.  
  13. int main()
  14. {
  15.  
  16.     int choice,data,n;
  17.     while(1)
  18.     {
  19.         printf("\n\n\t<<<<<<<WELCOME TO STACK PROGRAM>>>>>>>\n\n");
  20.         printf("\t1. Push\n");
  21.         printf("\t2. Pop\n");
  22.         printf("\t3. Size\n");
  23.         printf("\t4. TOP\n");
  24.         printf("\n\tEnter Your Choice: ");
  25.  
  26.         scanf("%d", &choice);
  27.  
  28.         switch(choice)
  29.         {
  30.         case 1:
  31.             printf("\tEnter data to push into stack: ");
  32.             scanf("%d", &data);
  33.             push(data);
  34.             break;
  35.  
  36.         case 2:
  37.             data = pop();
  38.  
  39.         if (data !=n )
  40.                 printf("\tData : %d\n", data);
  41.             break;
  42.  
  43.         case 3:
  44.             printf("\tStack size: %d\n", size);
  45.             break;
  46.  
  47.         case 4:
  48.             printf("\tTop is :%d\n",pop());
  49.             break;
  50.  
  51.         default:
  52.             printf("\tInvalid choice, please try again.\n");
  53.         }
  54.  
  55.         printf("\n\n");
  56.     }
  57.  
  58.  
  59.  
  60. }
  61.  
  62.  
  63. void push(int element)
  64.  
  65.     {
  66.  
  67.  
  68.     if (size >= CAPACITY)
  69.     {
  70.         printf("\tStack Overflow\n");
  71.         return;
  72.     }
  73.  
  74.  
  75.     struct node *N = (struct node *) malloc(sizeof(struct node));
  76.  
  77.  
  78.     N->data = element;
  79.  
  80.     N->next = top;
  81.  
  82.  
  83.     top = N;
  84.  
  85.     ++size;
  86.  
  87.     printf("\tData is pushed into stack.\n");
  88. }
  89.  
  90.  
  91.  
  92. int pop()
  93. {
  94.     int data = 0,n;
  95.     struct node * N;
  96.  
  97.     if (size <= 0 || !top)
  98.     {
  99.         printf("\tStack is empty.\n");
  100.  
  101.         return n;
  102.     }
  103.  
  104.  
  105.     N = top;
  106.     data = top->data;
  107.  
  108.  
  109.     top = top->next;
  110.  
  111.  
  112.     free(N);
  113.  
  114.    size--;
  115.  
  116.     return data;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment