Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

R. 45 Struktury - zadanie

Ostatnio zmodyfikowano 2020-06-15 17:47
Autor Wiadomość
Yumox
Temat założony przez niniejszego użytkownika
R. 45 Struktury - zadanie
» 2020-06-14 21:00:16
Napisałem kod do zadania 2 z tego tematu:
struktura
C/C++
struct wskaznik
{
    Lista * ostatnielement;
};
C/C++
int main()
{
    int liczba;
    Lista * lista = nullptr;
    wskaznik * element = new wskaznik;
    std::cout << "Podaj liczby, 0 lub blad konczy:\n";
   
    while( std::cin >> liczba && liczba )
         dodajKoniec( lista, liczba, element );
   
    std::cout << "Koniec, oto liczby:\n";
    wypisz( lista );
    zniszcz( lista );
}
i funkcja dodajKoniec()
C/C++
void dodajKoniec( Lista *& lista, int liczba, wskaznik *& element )
{
    Lista * nowy = new Lista;
    nowy->liczba = liczba;
    nowy->ogon = nullptr;
    if( lista == 0 )
    {
        lista = nowy;
        element->ostatnielement = lista;
    }
    else
    {
        element->ostatnielement->ogon = nowy;
        element->ostatnielement = nowy;
    }
}
Program działa, jednak moje pytanie brzmi, czy da się to zrobić lepiej, bez dodawania kolejnego argumentu do funkcji dodajKoniec()? Próbowałem tworzyć strukturę wskaźnik (o nazwie element w moim programie) bezpośrednio w funkcji dodajKoniec(), ale program nie działał prawidłowo, być może coś robię źle...
P-177128
pekfos
» 2020-06-14 21:05:08
Czemu w swojej strukturze nie trzymasz obu wskaźników? Zamiast dodawać nowy argument, mogłeś po prostu zmienić istniejący.
P-177129
Yumox
Temat założony przez niniejszego użytkownika
» 2020-06-14 22:57:47
Poprawiłem:
C/C++
struct wskaznik
{
    Lista * ostatnielement;
    Lista * lista = nullptr;
};
C/C++
void dodajKoniec( int liczba, wskaznik *& element )
{
    Lista * nowy = new Lista;
    nowy->liczba = liczba;
    nowy->ogon = nullptr;
    if( element->lista == 0 )
    {
        element->lista = nowy;
        element->ostatnielement = element->lista;
    }
    else
    {
        element->ostatnielement->ogon = nowy;
        element->ostatnielement = nowy;
    }
}
C/C++
int main()
{
    int liczba;
    wskaznik * element = new wskaznik;
    std::cout << "Podaj liczby, 0 lub blad konczy:\n";
   
    while( std::cin >> liczba && liczba )
         dodajKoniec( liczba, element );
   
    std::cout << "Koniec, oto liczby:\n";
    wypisz( element->lista );
    zniszcz( element->lista );
}
P-177132
pekfos
» 2020-06-15 17:47:09
To jest oczekiwane rozwiązanie zadania.
P-177145
« 1 »
  Strona 1 z 1