Zagnieżdżanie list
Ostatnio zmodyfikowano 2017-01-10 21:11
CTRL85 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. struct Koralik { int id; Koralik * nastepny; Koralik(); }; struct Sznurek { char id1; char id2; char id3; Sznurek * nastepny; 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; ListaSznurkow(); }; Mogę prosić o podpowiedź jak zrobić dodawanie koralika do konkretnego, podanego sznurka? Dodać do structa Koralik identyfikator sznurka, czy jakoś inaczej? |
|
mokrowski |
» 2017-01-10 20:40:41 A nie wiadomo. Nie widzę źródeł tylko jakiś nagłówek. Mam zgadywać? |
|
CTRL85 Temat założony przez niniejszego użytkownika |
» 2017-01-10 21:11:58 struct Sznurek { char id1; char id2; char id3; Sznurek * nastepny; 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; } 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; ListaSznurkow(); };
ListaSznurkow::ListaSznurkow() { pierwszy = 0; }
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; } } |
|
« 1 » |