У меня есть функция 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;
}
Обе мои функции работают отлично. Мне просто интересно, может ли кто-нибудь показать мне пример того, как искать связанный список, но вместо последовательного поиска, я хотел бы посмотреть, как двунаправленный поиск будет работать в учебных целях. Какие-либо предложения? Спасибо!
Задача ещё не решена.
Других решений пока нет …