Advertisement
ppathak35

stack with linked list

Jun 8th, 2022
776
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.36 KB | None | 0 0
  1. // Online C compiler to run C program online
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int maxsize = 5;
  6.  
  7. struct Node {
  8.     int data;
  9.     struct Node *next;
  10. } *start = NULL;
  11.  
  12. int isEmpty(){
  13.     return start == NULL;
  14. }
  15.  
  16. int size(){
  17.     struct Node *ptr;
  18.     int len=0;
  19.     if (!isEmpty()){
  20.         ptr = start;
  21.         while (ptr != NULL){
  22.             len += 1;
  23.             ptr = ptr->next;
  24.         }
  25.     }
  26.     return len;
  27. }
  28.  
  29. void push(int d) {
  30.     struct Node *temp, *ptr;
  31.     temp = (struct Node*)malloc(sizeof(struct Node));
  32.     temp->data = d;
  33.     temp->next = NULL;
  34.    
  35.     if (size() < maxsize) {
  36.         if (start == NULL) {
  37.         start = temp;
  38.         }
  39.         else {
  40.             ptr = start;
  41.             while (ptr->next != NULL) {
  42.                 ptr = ptr->next;
  43.             }
  44.             ptr->next = temp;
  45.         }
  46.     }
  47.     else {
  48.         printf("stack overflow");
  49.     }
  50. }
  51.  
  52. void pop() {
  53.     struct Node *ptr, *temp;
  54.     if (start != NULL) {
  55.         ptr = start;
  56.         while (ptr->next->next != NULL) {
  57.             ptr = ptr->next;
  58.         }
  59.         temp = ptr->next;
  60.         ptr->next = NULL;
  61.         printf("element popped is %d :", temp->data);
  62.         free(temp);
  63.     }
  64.     else {
  65.         printf("Stack underflow");
  66.     }
  67. }
  68.  
  69. void displayStack(){
  70.     struct Node *ptr;
  71.     ptr = start;
  72.     while (ptr != NULL) {
  73.         printf("%d ->", ptr->data);
  74.         ptr = ptr->next;
  75.     }
  76. }
  77.  
  78. int main(){
  79.     int choice=0, data=0;
  80.     while (choice != 5) {
  81.         printf("\n1. Push element");
  82.         printf("\n2. Pop element");
  83.         printf("\n3. Display Stack");
  84.         printf("\n4. Get stack size");
  85.         printf("\n5. Exit");
  86.        
  87.         printf("\nEnter choice : ");
  88.         scanf("%d", &choice);
  89.        
  90.         switch(choice) {
  91.             case 1:
  92.                     printf("\nInsert Head Element : ");
  93.                     scanf("%d", &data);
  94.                     push(data);
  95.                     break;
  96.             case 2:
  97.                     pop();
  98.                     break;
  99.             case 3:
  100.                     displayStack();
  101.                     break;
  102.             case 4:
  103.                     printf("stack has %d elements", size());
  104.                     break;
  105.             case 5:
  106.                     break;
  107.             default: break;
  108.         }
  109.     }
  110.     return 0;
  111. }
  112.  
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement