对于我的计算机科学课程,我们需要创建2个功能。一个函数需要定位被搜索项的串行位置(在这种情况下为int)和前一项的索引。 locateNode函数(上述函数)需要在Remove函数中使用,以及该类教授已经编写的其他函数。删除只是假定在删除项目之前获取项目,并使其指向被删除项目指向的项目。最后它将删除节点并将其推入同一阵列中的可用列表(基本上在一个阵列中有2个链接列表。)我的函数给了我错误的输出,我目前不知道哪个是错的或者是这两个功能都是错误的。
void SortedList::Remove(ItemType anItem, bool& success)
// IN OUT
{
int previous, position;
success=locateNode(anItem, previous, position);
cerr<<success<<endl;
if (success)
{
int current=list[0].next;
list[previous].next=list[list[previous].next].next;
for (int i=1; i<position; i++)
{
current=list[i].next;
}
PushAvail(current);
}
} // end Remove
bool SortedList::locateNode(
ItemType anItem, int& previous, int& position) const
{
position=1;
previous=0;
int current=list[0].next;
bool isPresent = false;
for (int count=1; count <= size; count++)
{
if (list[current].item >= anItem)
{
if ( list[current].item == anItem)
{
cerr<<"Position "<< position<< endl;
cerr<<"Previous "<< previous<< endl;
isPresent = true;
}
return isPresent;
}
position++;
previous=list[previous].next;
current=list[current].next;
}
return isPresent;
}