Завершено
4
20.10.2019, 02:19
28.10.2019, 11:19
Реализовать очередь на базе кругового динамического массива (с указателями или индексами на голову и хвост очереди).
Операции вставки и удаления должны иметь сложность 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.