From 1220ec0db0f10bdedca00b667965ebadfe22dd0b Mon Sep 17 00:00:00 2001 From: sfgfrevnjdsfkvdfkvbjhefve Date: Tue, 31 Dec 2024 19:08:52 +0300 Subject: [PATCH] Update circular_queue.cpp --- task3/circular_queue.cpp | 54 ++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/task3/circular_queue.cpp b/task3/circular_queue.cpp index fa74734..318b9e2 100644 --- a/task3/circular_queue.cpp +++ b/task3/circular_queue.cpp @@ -1,36 +1,46 @@ #include "circular_queue.hpp" +#include -CircularQueue::CircularQueue(size_t size) -{ - // your implementation here +CircularQueue::CircularQueue(size_t size) : capacity(size), front(0), rear(0), size(0) { + buffer.resize(capacity); } -bool CircularQueue::Push(int value) -{ - // your implementation here +bool CircularQueue::Push(int value) { + if (IsFull()) { + return false; // Очередь полна + } + buffer[rear] = value; // Добавляем элемент в очередь + rear = (rear + 1) % capacity; // Обновляем заднюю границу + ++size; // Увеличиваем размер очереди + return true; } -bool CircularQueue::Pop() -{ - // your implementation here +bool CircularQueue::Pop() { + if (IsEmpty()) { + return false; // Очередь пуста + } + front = (front + 1) % capacity; // Удаляем элемент из очереди + --size; // Уменьшаем размер очереди + return true; } -int CircularQueue::Front() const -{ - // your implementation here +int CircularQueue::Front() const { + if (IsEmpty()) { + return -1; // Если очередь пуста, возвращаем -1 + } + return buffer[front]; // Возвращаем элемент на передней границе } -int CircularQueue::Back() const -{ - // your implementation here +int CircularQueue::Back() const { + if (IsEmpty()) { + return -1; // Если очередь пуста, возвращаем -1 + } + return buffer[(rear + capacity - 1) % capacity]; // Возвращаем последний элемент } -bool CircularQueue::Empty() const -{ - // your implementation here +bool CircularQueue::IsEmpty() const { + return size == 0; // Проверка на пустоту } -bool CircularQueue::Full() const -{ - // your implementation here -} +bool CircularQueue::IsFull() const { + return size == capacity; // Проверка на полноту