Я делаю линейный поиск по отсортированному двусвязному списку (содержит несколько целочисленных идентификаторов).Для этого я использую временный указатель, назначенный заголовку (содержит первое значение dbl), и перехожу к следующему указателю, пока не будет найден запрошенный идентификатор.
Чтобы сократить время поиска, у меня может быть другой указатель, который назначен хвосту (указатель, содержащий последнее значение) и продолжен в обратном направлении вместе с предыдущим указателем
Моя реализация для линейного поиска
struct node* find(long int value) {
struct node*temp = head, *temp1 = tail;
while(temp->id < value && temp1->id > value){
temp = temp->next;
temp1 = temp1->prev;
}
if(temp->id == value)
return temp;
else if(temp1->id == value)
return temp1;
else
return NULL;
}
Здесь temp1 переходит назад, только после того, как темп переместился вперед
Мой вопрос:
Есть ли способ двигаться как вперед (темп), так и назад(temp1) указатели одновременно?
[Я имею в виду перемещение обоих указателей параллельно, чтобы даже уменьшить время совместного восприятия]
КЛЮЧЕВЫЕ СЛОВА: отсортированный двусвязный список, язык C