Очередь Си
-создать очередь
-добавить элемент в очередь
-удалить элемент из очереди
-уничтожить очередь
Для создания и манипулирования со структурами потребуются функции динамического выделения памяти 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