Odwołanie się do funkcji

0
Prowadzacy * ZnajdzProwadzacegoRekurencyjnie (Prowadzacy * pGlowaProwadzacego, string nazwisko){
    //jeśli istnieje
  if (pGlowaProwadzacego)
    {
      //jeśli znaleźliśmy prowadzącego zwrócić wskaźnik
      if (pGlowaProwadzacego->NazwiskoProwadzacego == nazwisko)
        return pGlowaProwadzacego;
      //jeśli nie znaleźlismy szukaj dalej
      else
        return ZnajdzProwadzacegoRekurencyjnie(pGlowaProwadzacego->pNastepnyProwadzacy, nazwisko);
    }
    //nie ma takiego prowadzacego
  else
      return nullptr;
}

void DodajProwadzacegoNaPoczatek (Prowadzacy *& pGlowaProwadzacego, Zajecia *& pGlowaListyZajec, string nazwisko){
    //tylko jeden prowadzacy

        pGlowaProwadzacego = new Prowadzacy {nazwisko, pGlowaProwadzacego, pGlowaListyZajec};

Chciałbym aby wypisał się tylko jeden prowadzący któremu przypiszemy listę podwieszaną a przy okazji wykorzystać poprzednią funkcję
Dereferencja wskaźnika nie pomaga bo funkcja Znajdź ma 2 argumenty a porównujemy ze stringiem, chyba że ktoś ma inny pomysł.

void DodajProwadzacegoNaPoczatek (Prowadzacy *& pGlowaProwadzacego, Zajecia *& pGlowaListyZajec, string nazwisko){
    //tylko jeden prowadzacy
    while(pGlowaProwadzacego->pNastepnyProwadzacy)
    {
        if(pGlowaProwadzacego->NazwiskoProwadzacego != nazwisko)
            pGlowaProwadzacego = new Prowadzacy {nazwisko, pGlowaProwadzacego, pGlowaListyZajec};
    }
}

A jeśli nie tak to czy takie rozwiązanie ma sens
Edit: poradziłem sobie inaczej ale nie ukrywam że wolałbym z funkcji skorzystać

void DodajProwadzacegoNaPoczatek (Prowadzacy *& pGlowaProwadzacego, Zajecia *& pGlowaListyZajec, string nazwisko){
    //tylko jeden prowadzacy
    while(true)
    {
        auto p = pGlowaProwadzacego;
        //jesli znalezlismy takie naziwsko przejdz do kolejnego elementu listy
        if(p->NazwiskoProwadzacego == nazwisko)
        {
            p = p->pNastepnyProwadzacy;
        }
        //dodaj prowadzacego na poczatek listy
        else
        {
            pGlowaProwadzacego = new Prowadzacy {nazwisko, pGlowaProwadzacego, pGlowaListyZajec};
              break;
        }
    }
}
0

O co dokładnie chodzi, Chcesz mieć rekurencyjna funkcję do znajdowania elementu w linked liście?

0

Chodziło mi o dodawanie elementu do listy jednokierunkowej, takiego którego jeszcze nie ma tzn. nazwiska prowadzącego którego jeszcze nie ma w liście, ale żeby żaden element się nie powtarzał , żeby nie pisać dwa razy tego samego

void DodajProwadzacegoNaPoczatek (Prowadzacy *& pGlowaProwadzacego, Zajecia *& pGlowaListyZajec, string nazwisko){
    //jesli nie znalezlismy to zwraca nullptr i dodaje prowadzacego na poczatku listy
    //tylko jeden prowadzacy
    if (ZnajdzProwadzacegoRekurencyjnie(pGlowaProwadzacego, nazwisko) == nullptr)
           pGlowaProwadzacego = new Prowadzacy {nazwisko, pGlowaProwadzacego, pGlowaListyZajec};

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1