使用链表中的二分搜索查找字符串

时间:2013-07-17 16:56:31

标签: c++ search linked-list bisection

我有一个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;
    }

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

0 个答案:

没有答案