queue.h File Reference

Double-ended queue. More...


Defines

#define QUEUE_NULL   ((void *) 0)
 A null QueueValue.

Typedefs

typedef struct _Queue Queue
 A double-ended queue.
typedef void * QueueValue
 A value stored in a Queue.

Functions

Queuequeue_new (void)
 Create a new double-ended queue.
void queue_free (Queue *queue)
 Destroy a queue.
int queue_push_head (Queue *queue, QueueValue data)
 Add a value to the head of a queue.
QueueValue queue_pop_head (Queue *queue)
 Remove a value from the head of a queue.
QueueValue queue_peek_head (Queue *queue)
 Read value from the head of a queue, without removing it from the queue.
int queue_push_tail (Queue *queue, QueueValue data)
 Add a value to the tail of a queue.
QueueValue queue_pop_tail (Queue *queue)
 Remove a value from the tail of a queue.
QueueValue queue_peek_tail (Queue *queue)
 Read a value from the tail of a queue, without removing it from the queue.
int queue_is_empty (Queue *queue)
 Query if any values are currently in a queue.


Detailed Description

Double-ended queue.

A double ended queue stores a list of values in order. New values can be added and removed from either end of the queue.

To create a new queue, use queue_new. To destroy a queue, use queue_free.

To add values to a queue, use queue_push_head and queue_push_tail.

To read values from the ends of a queue, use queue_pop_head and queue_pop_tail. To examine the ends without removing values from the queue, use queue_peek_head and queue_peek_tail.


Function Documentation

void queue_free ( Queue queue  ) 

Destroy a queue.

Parameters:
queue The queue to destroy.

int queue_is_empty ( Queue queue  ) 

Query if any values are currently in a queue.

Parameters:
queue The queue.
Returns:
Zero if the queue is not empty, non-zero if the queue is empty.

Queue* queue_new ( void   ) 

Create a new double-ended queue.

Returns:
A new queue, or NULL if it was not possible to allocate the memory.

QueueValue queue_peek_head ( Queue queue  ) 

Read value from the head of a queue, without removing it from the queue.

Parameters:
queue The queue.
Returns:
Value at the head of the queue, or QUEUE_NULL if the queue is empty.

QueueValue queue_peek_tail ( Queue queue  ) 

Read a value from the tail of a queue, without removing it from the queue.

Parameters:
queue The queue.
Returns:
Value at the tail of the queue, or QUEUE_NULL if the queue is empty.

QueueValue queue_pop_head ( Queue queue  ) 

Remove a value from the head of a queue.

Parameters:
queue The queue.
Returns:
Value that was at the head of the queue, or QUEUE_NULL if the queue is empty.

QueueValue queue_pop_tail ( Queue queue  ) 

Remove a value from the tail of a queue.

Parameters:
queue The queue.
Returns:
Value that was at the head of the queue, or QUEUE_NULL if the queue is empty.

int queue_push_head ( Queue queue,
QueueValue  data 
)

Add a value to the head of a queue.

Parameters:
queue The queue.
data The value to add.
Returns:
Non-zero if the value was added successfully, or zero if it was not possible to allocate the memory for the new entry.

int queue_push_tail ( Queue queue,
QueueValue  data 
)

Add a value to the tail of a queue.

Parameters:
queue The queue.
data The value to add.
Returns:
Non-zero if the value was added successfully, or zero if it was not possible to allocate the memory for the new entry.


Generated on Sun Sep 14 03:08:02 2008 for C Algorithms by  doxygen 1.5.5