106 lines
No EOL
3.1 KiB
C
106 lines
No EOL
3.1 KiB
C
// header files
|
|
#include "QueueUtility.h"
|
|
|
|
/* Data Structures
|
|
typedef struct StateArrayStruct
|
|
{
|
|
StateDataType *array;
|
|
|
|
int size, capacity;
|
|
} QueueType; (aka StateArrayType)
|
|
Data Structures*/
|
|
|
|
// function implementations
|
|
|
|
/*
|
|
Name: clearQueue
|
|
Process: clears QueueType, returns NULL
|
|
Function input/parameters: pointer to queue type (QueueType *)
|
|
Function output/parameters: none
|
|
Function output/returned: NULL
|
|
Device input/---: none
|
|
Device output/---: none
|
|
Dependencies: clearDataStructure
|
|
*/
|
|
QueueType *clearQueue( QueueType *queue )
|
|
{
|
|
// clear the entire data structure
|
|
clearDataStructure(queue);
|
|
// return NULL
|
|
return NULL;
|
|
}
|
|
|
|
/*
|
|
Name: createQueue
|
|
Process: creates QueueType, initializes front index to zero,
|
|
rear index to -1, returns pointer to data structure
|
|
Function input/parameters: initial capacity (int)
|
|
Function output/parameters: none
|
|
Function output/returned: pointer to queue type (QueueType *)
|
|
Device input/---: none
|
|
Device output/---: none
|
|
Dependencies: createDataStructure
|
|
*/
|
|
QueueType *createQueue()
|
|
{
|
|
// create the data structure
|
|
QueueType *queueDataStructure;
|
|
queueDataStructure = createDataStructure();
|
|
// return QueueType
|
|
return queueDataStructure;
|
|
}
|
|
|
|
/*
|
|
Name: peekFront
|
|
Process: captures value at front of queue
|
|
returns true if successful and sets return value,
|
|
otherwise, sets return value to empty, returns false
|
|
Function input/parameters: pointer to queue type (QueueType *)
|
|
Function output/parameters: pointer to return value (StateDataType *)
|
|
Function output/returned: Boolean result of operation
|
|
Device input/---: none
|
|
Device output/---: none
|
|
Dependencies: getItemAtIndex, getListSize
|
|
*/
|
|
bool peekFront( StateDataType *returnVal, const QueueType queue )
|
|
{
|
|
// use getListSize to get the 'front' value
|
|
// use getItemAtIndex to 'see' the value at the front.
|
|
return getItemAtIndex(returnVal, queue, getListSize(queue));
|
|
}
|
|
|
|
/*
|
|
Name: dequeue
|
|
Process: captures value at front of queue, removes and returns value,
|
|
returns true if successful,
|
|
otherwise, sets return value to empty, returns false
|
|
Function input/parameters: pointer to queue type (QueueType *)
|
|
Function output/parameters: pointer to return value (StateDataType *)
|
|
Function output/returned: Boolean result of operation
|
|
Device input/---: none
|
|
Device output/---: none
|
|
Dependencies: removeItemAtIndex, getListSize
|
|
*/
|
|
bool dequeue( StateDataType *returnVal, QueueType *queue )
|
|
{
|
|
// get the "front" of the queue
|
|
// remove the value in the queue and return success/failure
|
|
return removeItemAtIndex(queue, returnVal, getListSize(*queue));
|
|
}
|
|
|
|
/*
|
|
Name: enqueue
|
|
Process: sets value at rear of queue
|
|
returns true if successful, false otherwise
|
|
Function input/parameters: pointer to queue type (QueueType *)
|
|
Function output/parameters: value to be pushed (const StateDataType)
|
|
Function output/returned: Boolean result of operation
|
|
Device input/---: none
|
|
Device output/---: none
|
|
Dependencies: insertItemAtIndex
|
|
*/
|
|
bool enqueue( QueueType *queue, const StateDataType toBePushed )
|
|
{
|
|
// return function success/failure based on inputs
|
|
return insertItemAtIndex(queue, toBePushed, 0);
|
|
} |