用于在链接列表中查找特定项目并将其删除的代码

时间:2018-04-04 01:56:10

标签: linked-list

对于我的计算机科学课程,我们需要创建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;
}

0 个答案:

没有答案