Advertisement
Hakuhun

fifo 2k18

Sep 25th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <cstdlib>
  3.  
  4. #define FIFO_OK 0
  5. #define FIFO_NOK -1
  6.  
  7. char * p = nullptr;
  8.  
  9. int in = 0, out = 0, count = 0, size = 0;
  10.  
  11. int NewFifo(int n) {
  12.     if (n > 0 && p == NULL) {
  13.         p = (char*) malloc(n);
  14.         size = n;
  15.         return FIFO_OK;
  16.     }
  17.     else {
  18.         return FIFO_NOK;
  19.     }
  20. }
  21.  
  22. void DeleteFifo(void) {
  23.     if(p != NULL)
  24.         free(p);
  25. }
  26.  
  27. int Push(char c) {
  28.     if (size == count || p == NULL)
  29.         return FIFO_NOK;
  30.  
  31.     *(p + in) = c;
  32.     in++; count++;
  33.     in = in % size;
  34.     return FIFO_OK;
  35. }
  36.  
  37. int Pop() {
  38.     if(size == 0 ||p == NULL)
  39.         return FIFO_NOK;
  40.  
  41.     char c = *(p + out);
  42.     count--;
  43.     if (count > 0){
  44.         out++;
  45.         out = out % size;
  46.     }
  47.     return c;
  48. }
  49.  
  50. int main(void) {
  51.  
  52.     NewFifo(4);
  53.     Push('A');
  54.  
  55.    
  56.     DeleteFifo();
  57.  
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement