priority_queue.h

A simple priority queue.

PRIORITY_QUEUE_NODE_INIT

Static initializer for priority_queue_node_t.

1
{ NULL, 0, 0 }
PRIORITY_QUEUE_INIT

Static initializer for priority_queue_t.

1
{ NULL }
struct priority_queue_node priority_queue_node_t

data type for priority queue nodes

void priority_queue_node_init(priority_queue.h::priority_queue_node_t * priority_queue_node)

Initialize a priority queue node object.

For initialization of variables use PRIORITY_QUEUE_NODE_INIT instead. Only use this function for dynamically allocated priority queue nodes.

Parameters

priority_queue_node:
 pre-allocated priority_queue_node_t object, must not be NULL.

void priority_queue_init(priority_queue_t * priority_queue)

Initialize a priority queue object.

For initialization of variables use PRIORITY_QUEUE_INIT instead. Only use this function for dynamically allocated priority queues.

Parameters

priority_queue:pre-allocated priority_queue_t object, must not be NULL.

priority_queue.h::priority_queue_node_t * priority_queue_remove_head(priority_queue_t * root)

remove the priority queue’s head

Parameters

root:the queue’s root

Return values

  • the old head
void priority_queue_add(priority_queue_t * root, priority_queue.h::priority_queue_node_t * new_obj)

insert new_obj into root based on its priority

The new object will be appended after objects with the same priority.

Parameters

root:the queue’s root
new_obj:the object to prepend

void priority_queue_remove(priority_queue_t * root, priority_queue.h::priority_queue_node_t * node)

remove node from root

Parameters

root:the priority queue’s root
node:the node to remove

void priority_queue_print(priority_queue_t * root)

print the data and priority of every node in the given priority queue

Note

requires nhdp.h::ENABLE_DEBUG to be set to 1 for this file

void priority_queue_print_node(priority_queue_t * root)

print the data, priority, and successor of a given node

Note

requires nhdp.h::ENABLE_DEBUG to be set to 1 for this file

struct priority_queue_node

data type for priority queue nodes

struct priority_queue_node * next

next queue node

uint32_t priority

queue node priority

unsigned int data

queue node data

struct priority_queue_t

data type for priority queues

priority_queue.h::priority_queue_node_t * first

first queue node