Задание № 807

Студент

Науменко Тимофей

Задача

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

Состояние

Завершено

Баллов

4

Дедлайн
30 ноября 2016
Назначено

13.10.2016, 12:38

Завершено

24.10.2016, 09:55

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

Операции вставки и удаления должны иметь сложность 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.

Действия