Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <cstdlib>
- #define FIFO_OK 0
- #define FIFO_NOK -1
- char * p = nullptr;
- int in = 0, out = 0, count = 0, size = 0;
- int NewFifo(int n) {
- if (n > 0 && p == NULL) {
- p = (char*) malloc(n);
- size = n;
- return FIFO_OK;
- }
- else {
- return FIFO_NOK;
- }
- }
- void DeleteFifo(void) {
- if(p != NULL)
- free(p);
- }
- int Push(char c) {
- if (size == count || p == NULL)
- return FIFO_NOK;
- *(p + in) = c;
- in++; count++;
- in = in % size;
- return FIFO_OK;
- }
- int Pop() {
- if(size == 0 ||p == NULL)
- return FIFO_NOK;
- char c = *(p + out);
- count--;
- if (count > 0){
- out++;
- out = out % size;
- }
- return c;
- }
- int main(void) {
- NewFifo(4);
- Push('A');
- DeleteFifo();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement