Advertisement
ppathak35

LinkedList

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