Задание № 2799

Студент

Шугалевский Александр

Задача

Динамическая очередь

Состояние

Отменено

Назначено

02.11.2020, 05:19

Обновлено

07.12.2020, 15:48

Реализовать очередь на базе кругового динамического массива (с указателями или индексами на голову и хвост очереди).

Операции вставки и удаления должны иметь сложность O(1) в том случае, если не вызывается функция realloc.

typedef struct tQueue {
    /* ... */
} Queue;

typedef void *Pointer;

/* Создать пустую очередь */
void queue_create(Queue *pqueue);

/* Уничтожить очередь, освободив выделенную память */
void queue_destroy(Queue *pqueue);

/* Поместить значение value в конец очереди */
void queue_enqueue(Queue *pqueue, Pointer value);

/* Возвращает количество элементов в очереди (0, если очередь пуста) */
size_t queue_size(Queue *pqueue);

/* Исключить и вернуть значение первого элемента очереди. 
   Если очередь пуста, возвращает 0 */
Pointer queue_dequeue(Queue *pqueue);

/*
 * Возвращает значение первого элемента, не удаляя его из очереди.
 * Если очередь пуста, возвращает 0 
 */
Pointer queue_peek(Queue *pqueue);

Тесты с помощью assert.

Действия