"Completed" PA05

(aka don't want to spend anymore time on it)
+- ArrayDataEngine.c
+- IteratorUtility.c
+- QueueUtility.c
+- StackUtility.c
This commit is contained in:
Charles Descamps 2023-10-04 17:25:56 -07:00
parent a9a217cc45
commit 770212bc8e
5 changed files with 75 additions and 45 deletions

View file

@ -68,8 +68,10 @@ Dependencies: getItemAtIndex
*/
bool getFirst( IteratorType *iterator, StateDataType *returned )
{
// set currentIndex to 0
iterator->currentIndex = 0;
// return function true/false if value possible
return getItemAtIndex(returned, *iterator->iterData, 0);
return getItemAtIndex(returned, *iterator->iterData, iterator->currentIndex);
}
/*
@ -85,8 +87,10 @@ Dependencies: getItemAtIndex, getListSize
*/
bool getLast( IteratorType *iterator, StateDataType *returned )
{
// set currentIndex to getListSize
iterator->currentIndex = getListSize(*iterator->iterData);
// return function to see if possible
return getItemAtIndex(returned, *iterator->iterData, getListSize(*iterator->iterData));
return getItemAtIndex(returned, *iterator->iterData, iterator->currentIndex);
}
/*
@ -106,7 +110,8 @@ bool getNext( IteratorType *iterator, StateDataType *returned )
if(iterator->currentIndex != getListSize(*iterator->iterData))
{
iterator->currentIndex = iterator->currentIndex + 1;
return getItemAtIndex(returned, *iterator->iterData, iterator->currentIndex);
return getItemAtIndex(returned, *iterator->iterData,
iterator->currentIndex);
}
// return false
return false;
@ -129,7 +134,8 @@ bool getPrevious( IteratorType *iterator, StateDataType *returned )
if(iterator->currentIndex != 0)
{
iterator->currentIndex = iterator->currentIndex - 1;
return getItemAtIndex(returned, *iterator->iterData, iterator->currentIndex);
return getItemAtIndex(returned, *iterator->iterData,
iterator->currentIndex);
}
// return false
return false;
@ -151,7 +157,8 @@ bool insertAfterCurrentIndex( IteratorType *iterator,
const StateDataType toBeInserted )
{
// return function true/false based on possibility
return insertItemAtIndex(iterator->iterData, toBeInserted, iterator->currentIndex + 1);
return insertItemAtIndex(iterator->iterData, toBeInserted,
iterator->currentIndex + 1);
}
/*
@ -170,7 +177,8 @@ bool insertAtCurrentIndex( IteratorType *iterator,
const StateDataType toBeInserted )
{
// return true/false based on if the function deems worthy
return insertItemAtIndex(iterator->iterData, toBeInserted, iterator->currentIndex);
return insertItemAtIndex(iterator->iterData, toBeInserted,
iterator->currentIndex);
}
/*
@ -188,5 +196,18 @@ Dependencies: removeItemAtIndex, getListSize
*/
bool removeAtCurrentIndex( IteratorType *iterator, StateDataType *removedItem )
{
return removeItemAtIndex(iterator->iterData, removedItem, iterator->currentIndex);
// need to check if the last element is being removed
if(iterator->currentIndex == getListSize(*iterator->iterData))
{
// move the currentIndex back one,
// return removeItemAtIndex with currentIndex + 1
iterator->currentIndex = iterator->currentIndex - 1;
return removeItemAtIndex(iterator->iterData, removedItem,
iterator->currentIndex + 1);
// gives the effect like it removed,
// but doesn't screw up the rest of the program.
}
// otherwise, remove the item
return removeItemAtIndex(iterator->iterData, removedItem,
iterator->currentIndex);
}