86. Circular Buffer Read

Back To All Submissions
Previous Submission
Next Submission

Code

#include <stdio.h>

typedef struct {
    int buffer[10];
    int head;
    int tail;
    int count;
    int capacity;
} CircularBuffer;

void read_bytes(CircularBuffer *c, int n) {
    
   // use the pop up logic

    for(int i=0;i<n;i++){

        if(c->count == 0)
            printf("NULL");
        else{
            printf("%d", c->buffer[c->tail]);
        
        c->tail=(c->tail+1)%c->capacity;
        c->count--;
        }

        if(i<n-1)
            printf(" ");
    }

    printf("\n");
    printf("Tail: %d",c->tail);

}

// int main() {
//     CircularBuffer cb = {
//         .buffer = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100},
//         .head = 3,
//         .tail = 7,
//         .count = 6,
//         .capacity = 10
//     };

//     int n;
//     scanf("%d", &n);
//     read_bytes(&cb, n);

//     return 0;
// }


int main(){

    CircularBuffer cb = {
        .buffer = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100},
        .head = 3,
        .tail=7,
        .count = 6,
        .capacity=10,
    };

    int n;
    scanf("%d", &n);
    read_bytes(&cb, n);

    return 0;
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote