From 3e0315a4226338bd08508d0eb1ad4726136b7dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=A1=D0=BE=D0=BB?= =?UTF-8?q?=D0=BE=D0=B4=D1=8F=D0=BD=D0=BA=D0=B8=D0=BD?= Date: Fri, 16 Jun 2023 20:50:56 +0000 Subject: [PATCH] =?UTF-8?q?Circular=20buffer=20=D0=B3=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Circular buffer/сircular_buf.c | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Circular buffer/сircular_buf.c diff --git a/Circular buffer/сircular_buf.c b/Circular buffer/сircular_buf.c new file mode 100644 index 0000000..3f09963 --- /dev/null +++ b/Circular buffer/сircular_buf.c @@ -0,0 +1,42 @@ +#include +#include + +#define BUFFER_SIZE 10 + +typedef struct { + int buffer[BUFFER_SIZE]; + int BufHead; + int BufTail; +} CircularBuffer; + +void initializeBuffer(CircularBuffer* cb) { + cb->BufHead = 0; + cb->BufTail = 0; +} +// , +int BufferEmpty(const CircularBuffer* cb) { + return cb->BufHead == cb->BufTail; +} +// , +int BufferFull(const CircularBuffer* cb) { + return (cb->BufTail + 1) % BUFFER_SIZE == cb->BufHead;// , false, true +} +// +void writeBuffer(CircularBuffer* cb, int value) { + if (BufferFull(cb)) { // + return; + } + cb->buffer[cb->BufTail] = value;// value buffer + cb->BufTail = (cb->BufTail + 1) % BUFFER_SIZE;// cb->BufTail, +} +// +int readBuffer(CircularBuffer* cb) { + if (BufferEmpty(cb)) { // + return -1;// -1 + } + int value = cb->buffer[cb->BufHead]; // + cb->BufHead = (cb->BufHead + 1) % BUFFER_SIZE; // +1 + return value; +} + +