Advertisement
EvgeniiKraaaaaaaav

Queue(Char array base)

Sep 25th, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.51 KB | None | 0 0
  1. //https://vk.com/evgenykravchenko0
  2.  
  3.                 ___                                        ___                   ___    
  4.                /  /\                  ___                 /  /\                 /  /\    
  5.               /  /:/_                /__/\               /  /:/_               /  /:/_  
  6.              /  /:/ /\               \  \:\             /  /:/ /\             /  /:/ /\  
  7.             /  /:/ /:/_               \  \:\           /  /:/_/::\           /  /:/ /:/_
  8.            /__/:/ /:/ /\          ___  \__\:\         /__/:/__\/\:\         /__/:/ /:/ /\
  9.            \  \:\/:/ /:/         /__/\ |  |:|         \  \:\ /~~/:/         \  \:\/:/ /:/
  10.             \  \::/ /:/          \  \:\|  |:|          \  \:\  /:/           \  \::/ /:/
  11.              \  \:\/:/            \  \:\__|:|           \  \:\/:/             \  \:\/:/  
  12.               \  \::/              \__\::::/             \  \::/               \  \::/  
  13.                \__\/                   ~~~~               \__\/                 \__\/    
  14.                             ___                                            
  15.                            /__/\                ___                 ___    
  16.                            \  \:\              /  /\               /  /\    
  17.                             \  \:\            /  /:/              /  /:/    
  18.                         _____\__\:\          /__/::\             /__/::\    
  19.                        /__/::::::::\         \__\/\:\__          \__\/\:\__
  20.                        \  \:\~~\~~\/            \  \:\/\            \  \:\/\
  21.                         \  \:\  ~~~              \__\::/             \__\::/
  22.                          \  \:\                  /__/:/              /__/:/
  23.                           \  \:\                 \__\/               \__\/  
  24.                            \__\/                      
  25.  
  26. #include <stdio.h>
  27. #include <stdlib.h>
  28.  
  29. #define MAX_SIZE 50
  30.  
  31. char* push ( char *str, int *p);
  32. void status ( char *str, int elem);
  33. char* pop ( char *str, int *p);
  34.  
  35. int main ( int argc, const char * argv[]) {
  36.     int elem        = 0;
  37.     int *p;
  38.     p = &elem;
  39.    
  40.     char *str       = NULL;
  41.     int pressed_key = 0;
  42.    
  43.     do {
  44.         printf("          MENU\n");
  45.         printf("1. Add symbol in queue..\n");
  46.         printf("2. Queue status..\n");
  47.         printf("3. Delete symbol from queue..\n");
  48.         printf("4. Exit..\n\n");
  49.        
  50.         printf("Enter number.. - ");
  51.         scanf("%d", &pressed_key);
  52.         if (pressed_key == 1) {
  53.             str = push(str, p);
  54.             printf("\n%d", elem);
  55.         }
  56.         if (pressed_key == 2) {
  57.             status(str, elem);
  58.             printf("\n%d", elem);
  59.         }
  60.         if (pressed_key == 3) {
  61.             str = pop(str, p);
  62.             printf("\n%d", elem);
  63.         }
  64.     } while (pressed_key != 4);
  65.    
  66.     return 0;
  67. }
  68.  
  69. char* push (char *str, int *p) {
  70.     if (MAX_SIZE == *p) {
  71.         printf("\nQueue is full.\n");
  72.         getchar();
  73.         getchar();
  74.     }
  75.     else {
  76.         printf("\n\nEnter symbol to add in queue: ");
  77.    
  78.         if (str == NULL) {
  79.             str = (char*)malloc((*p + 1) * sizeof(char));
  80.         }
  81.         else
  82.             str = (char*)realloc(str, (*p + 1) * sizeof(char));
  83.        
  84.    
  85.         scanf(" %c", &str[*p]);
  86.         *p += 1;
  87.     }
  88.    
  89.     return str;
  90.  
  91.    
  92. }
  93.  
  94. void status( char *str, int elem) {
  95.     if (elem == 0) {
  96.         printf("\nQueue is empty.\n\n");
  97.     }
  98.     else
  99.         printf("\n Queue: ");
  100.    
  101.         for (int i = 0; i < elem; i++) {
  102.             printf("%c", str[i]);
  103.         }
  104.     getchar();
  105.     getchar();
  106.     printf("\n");
  107. }
  108.  
  109. char* pop (char *str, int *p) {
  110.     if (*p != 0) {
  111.         char *temp = str;
  112.         char *arr;
  113.         printf("Deleted element: ");
  114.         printf("\n%p\n", temp);
  115.         printf("%p\n", str);
  116.         if (str != NULL) {
  117.             printf("%c\n", *temp);
  118.         }
  119.    
  120.         for (int i = 1; i < *p; i++) {
  121.             str[i - 1] = str[i];
  122.         }
  123.         *p -= 1;
  124.         arr = (char*)malloc(*p * sizeof(char));
  125.    
  126.         for (int i = 0; i < *p; i++) {
  127.             arr[i] = str[i];
  128.         }
  129.         free(str);
  130.         str = (char*)malloc(*p * sizeof(char));
  131.                              
  132.         for (int i = 0; i < *p; i++) {
  133.             str[i] = arr[i];
  134.         }
  135.     }
  136.     else {
  137.      printf(" \nQueue is empty\n");
  138.                              
  139.     }
  140.     getchar();
  141.     getchar();
  142.                              
  143.     return str;
  144.                              
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement