home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
POINT Software Programming
/
PPROG1.ISO
/
c
/
snippets
/
queue.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-13
|
2KB
|
62 lines
/*
+----------------------------------------------------+
| Thunderbird Software |
+----------------------------------------------------+
| Filespec : Queue.c |
| Date : September 29, 1994 |
| Time : 10:16AM |
| Revision : 1.0 |
+----------------------------------------------------+
| Programmer: Scott Andrews |
| Address : 5358 Summit RD SW |
| City/State: Pataskala, Ohio |
| Zip : 43062 |
+----------------------------------------------------+
| Released to the Public Domain |
+----------------------------------------------------+
*/
#include <stdlib.h>
#include "queue.h"
QUEUE *alloc_queue( int size)
{ QUEUE *retval;
retval = (QUEUE *) malloc( sizeof( QUEUE) + (size_t) size);
if ( (QUEUE *) 0 != retval)
{ retval->size = size;
retval->head = 0;
retval->tail = 0;
retval->avail = size;
retval->buffer = ( (char *) retval) + sizeof( QUEUE);
}
return retval;
}
int en_queue( QUEUE *queue, char data)
{ int retval = -1;
if ( 0 != queue->avail)
{ *( queue->buffer + queue->head) = data;
queue->head += 1;
if ( queue->head == queue->size)
queue->head = 0;
queue->avail -= 1;
retval = queue->avail;
}
return retval;
}
int de_queue( QUEUE *queue)
{ int retval = -1;
if ( queue->avail != queue->size)
{ retval = *( queue->buffer + queue->tail);
queue->tail += 1;
if ( queue->tail == queue->size)
queue->tail = 0;
queue->avail += 1;
}
return retval;
}
/* End of Queue.c */