Zagnieżdżanie list
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Zagnieżdżanie list

AutorWiadomość
Temat założony przez niniejszego użytkownika
Zagnieżdżanie list
» 2017-01-10 19:12:44
Witam!

Mam zrobioną listę z umownymi sznurkami - każdy ma unikalny identyfikator (trzy chary - id1, id2, id3), dodatkowo każdy sznurek może mieć pewną ilość koralików, każdy także posiadający identyfikator.

Mój problem polega na tym, że nie wiem jak zaimplementować listę z koralikami.

C/C++
struct Koralik {
    int id;
   
    Koralik * nastepny;
   
    Koralik();
};
struct Sznurek {
    char id1;
    char id2;
    char id3;
   
    Sznurek * nastepny; //wskaźnik do kolejnego sznurka
   
    Sznurek();
   
    void DodajKoralik( char id1, char id2, char id3, int idKoralika );
    void UsunKoralik( char id1, char id2, char id3, int idKoralika );
   
    Koralik * pierwszy;
};
struct ListaSznurkow {
    void DodajSznurek( char id1, char id2, char id3 );
    void UsunSznurek( char id1, char id2, char id3 );
    void Wyswietl();
   
    Sznurek * pierwszy; //wskaźnik na pierwzy sznurek
   
    ListaSznurkow();
};

Mogę prosić o podpowiedź jak zrobić dodawanie koralika do konkretnego, podanego sznurka? Dodać do structa Koralik identyfikator sznurka, czy jakoś inaczej?
P-156290
» 2017-01-10 20:40:41
A nie wiadomo. Nie widzę źródeł tylko jakiś nagłówek. Mam zgadywać?
P-156292
Temat założony przez niniejszego użytkownika
» 2017-01-10 21:11:58
C/C++
struct Sznurek {
    char id1;
    char id2;
    char id3;
   
    Sznurek * nastepny; //wskaźnik do kolejnego sznurka
   
    Sznurek();
   
    struct Koralik {
        char id1;
        char id2;
        char id3;
       
        int idKoralika;
       
        Koralik * nastepny;
       
        Koralik();
    };
   
    void DodajKoralik( char id1, char id2, char id3, int idKoralika );
    void UsunKoralik( char id1, char id2, char id3, int idKoralika );
   
    Koralik * pierwszy;
};

Sznurek::Sznurek() {
    nastepny = 0; //konstruktor
}
Sznurek::Koralik::Koralik() {
    nastepny = 0;
}

void Sznurek::DodajKoralik( char id1, char id2, char id3, int idKoralika ) {
    Koralik * Nowy = new Koralik;
    Koralik * Temp = pierwszy;
   
    Nowy->id1 = id1;
    Nowy->id2 = id2;
    Nowy->id3 = id3;
    Nowy->idKoralika = idKoralika;
   
    if( pierwszy == 0 )
         pierwszy = Nowy;
    else {
        while( Temp->nastepny )
             Temp = Temp->nastepny;
       
        Temp->nastepny = Nowy;
        Nowy->nastepny = 0;
    }
}
void Sznurek::UsunKoralik( char id1, char id2, char id3, int idKoralika ) {
   
}

struct ListaSznurkow {
    void DodajSznurek( char id1, char id2, char id3 );
    void UsunSznurek( char id1, char id2, char id3 );
    void Wyswietl();
   
    Sznurek * pierwszy; //wskaźnik na pierwzy sznurek
   
    ListaSznurkow();
};

ListaSznurkow::ListaSznurkow() {
    pierwszy = 0; //konstruktor
}

void ListaSznurkow::DodajSznurek( char id1, char id2, char id3 ) {
    Sznurek * Nowy = new Sznurek;
    Sznurek * Temp = pierwszy;
   
    Nowy->id1 = id1;
    Nowy->id2 = id2;
    Nowy->id3 = id3;
   
    if( pierwszy == 0 )
         pierwszy = Nowy;
    else {
        while( Temp->nastepny )
             Temp = Temp->nastepny;
       
        Temp->nastepny = Nowy;
        Nowy->nastepny = 0;
    }
}
void ListaSznurkow::UsunSznurek( char id1, char id2, char id3 ) {
    Sznurek * Temp = pierwszy;
    bool found = false;
   
    if( Temp->id1 == id1 && Temp->id2 == id2 && Temp->id3 == id3 ) {
        pierwszy = Temp->nastepny;
    }
    else {
        int i = 0;
        Temp = pierwszy;
       
        while( Temp && !found ) {
            Temp = Temp->nastepny;
           
            if( Temp->id1 == id1 && Temp->id2 == id2 && Temp->id3 == id3 )
                 found = true;
           
            i++;
        }
        Temp = pierwszy;
        for( int j = 0; j < i - 1; j++ ) {
            Temp = Temp->nastepny;
        }
        if( Temp->nastepny->nastepny == 0 )
             Temp->nastepny = 0;
        else
             Temp->nastepny = Temp->nastepny->nastepny;
       
    }
}
void ListaSznurkow::Wyswietl() {
    Sznurek * Temp = pierwszy;
   
    while( Temp ) {
        cout << Temp->id1;
        cout << Temp->id2;
        cout << Temp->id3;
        cout << "\n";
       
        Temp = Temp->nastepny;
    }
}
P-156296
« 1 »
 Strona 1 z 1