Skoro chcesz zwracać wskaźnik, to funkcja powinna wyglądać tak:
elem *szukaj(elem *tail, char *tab){
if(!tail)
{
printf("kolejka pusta");
}
else /*jesli nie jest pusta*/
{
while(tail) /*przechodzimy petla dopoki tail nie wskazuje na null*/
{
if(strcmp(tail->value, tab)==0){
return tail;
}
tail = tail->prev; /*przepinamy tail na wczesniejsz element w klejce*/
}
return nullptr;
}
}
Typ zwracany - oczywiście powinien być typem wskaźnikowym skoro chcesz zwracać wskaźnik.
W jedenastej linii miałeś dereferencje wskaźnika. Nie powinno jej być.