Got close to finishing
++ IteratorUtility.c ++ LLDataEngine.c ++ QueueUtility.c ++ StackUtility.c +- PA06_Main.c +- Makefile for PA06
This commit is contained in:
parent
635ce9ffad
commit
b7cb3dc9e0
8 changed files with 899 additions and 88 deletions
106
PA06-1018/QueueUtility.c
Normal file
106
PA06-1018/QueueUtility.c
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
// 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) - 1);
|
||||
}
|
||||
|
||||
/*
|
||||
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) - 1);
|
||||
}
|
||||
|
||||
/*
|
||||
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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue