0

我有一个 Find 函数,可以按顺序搜索字符串的链接列表。此 Find 函数查找字符串并将其返回。我还有一个删除函数,它使用这个 Find 函数并从链表中删除字符串。我的两个功能都有效。但是,我试图测试另一种搜索链表的方法,我想知道是否可以在链表中进行二分搜索。这是我的代码:

寻找

StringList::StringListNode *StringList::find(const string &s) //basic search function
{
    StringListNode *sp = pTop;   // Search
    while (sp != 0 && sp->data != s)
        sp = sp->pNext;
        return sp;


}

这是删除功能:

 void StringList::remove(string s)
{

    StringListNode *curr = this->find(s);
    if (curr->pPrev != 0)
    {
        curr->pPrev->pNext = curr->pNext;

    }

    if (curr->pNext != 0)
    {
        curr->pNext->pPrev = curr->pPrev;

    }
    if (pTop == curr)
    {
        pTop = curr->pNext;

    }
    if (pBottom == curr)
    {
        pBottom = curr->pPrev;
    }

我的两个功能都可以完美运行。我只是想知道是否有人可以向我展示如何搜索链表的示例,而不是顺序搜索,我想看看二分搜索如何用于学习目的。有什么建议么?谢谢!

4

0 回答 0