#include <stdio.h> typedef struct { int buffer[100]; int head; int tail; int count; int capacity; } CircularBuffer; void insert_circular(CircularBuffer *cb, int value) { // Your logic using only pointer access //if(cb->tail==cb->count-1&& cb->head==0) if(cb->count!=cb->capacity){ if(cb->head==-1 && cb->tail==-1) cb->head=cb->tail=0; else if((cb->tail==(cb->capacity)-1)&&(cb->head!=0)) cb->tail=0; else cb->tail=cb->tail+1; cb->buffer[cb->tail]=value; cb->count++;} } int main() { int n, k; scanf("%d %d", &n, &k); CircularBuffer cb = { .head = -1, .tail = -1, .count = 0, .capacity = n }; for (int i = 0; i < k; i++) { int val; scanf("%d", &val); insert_circular(&cb, val); } for (int i = 0; i < cb.count; i++) { printf("%d", cb.buffer[i]); if(i < cb.count-1){ printf(" "); } } return 0; }
Test Cases
Test Results
Input
5 5 10 20 30 40 50
Expected Output
10 20 30 40 50