Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Очередь Си

56K
25 января 2010 года
yamaya
1 / / 25.01.2010
Реализовать абстрактный тип "очередь с приоритетами" (priority queue) с помощью алгоритма бинарной кучи ("binary heap"). Реализовать операции:
-создать очередь
-добавить элемент в очередь
-удалить элемент из очереди
-уничтожить очередь

Для создания и манипулирования со структурами потребуются функции динамического выделения памяти malloc(3), free(3), realloc(3).

Вот "скелет" программы:

/*Priority Queue.
*/

#ifndef _PRIOQ_H
#define _PRIOQ_H

typedef int (*prioq_compare_t)(struct prioq_head *a, struct prioq_head *b);

struct prioq;

struct prioq_head {
int index;
};

/* Create new priority queue. */
struct prioq *prioq_new(prioq_compare_t compare);

/* Free priority queue and release it's resources. */
void prioq_free(struct prioq **queue);

/* Put head into priority queue. */
int prioq_put(struct prioq *queue, struct prioq_head *hp);

/* Peek head from queue. */
struct prioq_head *prioq_peek(struct prioq *queue);

/* Extract head from queue. */
struct prioq_head *prioq_get(struct prioq *queue);

/* Remove head from queue. */
void prioq_remove(struct prioq *queue, struct prioq_head *hp);

#endif
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог