Struktury danych - lista
Ostatnio zmodyfikowano 2013-01-07 19:05
rooker Temat założony przez niniejszego użytkownika |
» 2013-01-06 12:13:55 Napisalem kod do listy dynamicznej, ktora wczytuje liczby az do napotkania 0.Liczby są zapisywane po sobie. Korzystalem troche z przykladow innych natomiast nadal niebardzo rozumiem tego zapisu z ->. Może mi ktoś wytłumaczyć??? using namespace std; struct element { int dane; element * next; }; int main() { element * glowa, * aktualny, * ogon; glowa = NULL; aktualny = NULL; int liczba; cout << "wpisz liczbe, 0 zakonczy program ;)))"; cin >> liczba; while( liczba != 0 ) { ogon = aktualny; aktualny = new element; aktualny->dane = liczba; aktualny->next = NULL; if( ogon == NULL ) { glowa = aktualny; } else { ogon->next = aktualny; cin >> liczba; } } return 0; } |
|
withelm |
» 2013-01-06 13:30:27 aktualny->dane = liczba; aktualny->next = NULL;
^^^ jest równoznaczne z tym ( * aktualny ).dane = liczba; ( * aktualny ).next = NULL;
|
|
rooker Temat założony przez niniejszego użytkownika |
» 2013-01-06 14:12:42 Dzięki withelm, tego mi brakowało. A jeszcze jakbyś mógł słownie to opisać, bo nie jestem pewien co do jednej rzeczy... |
|
kubawal |
» 2013-01-07 17:20:44 -> (strzałka) działa tak, jak . (kropka), tylko, że uzyskujesz dostęp za pomocą wskaźnika, a nie obiektu: element e; element * pe = & e;
W tym przykładzie e.data == pe->data Już rozumiesz? |
|
crash |
» 2013-01-07 19:05:52 Rooker@ poczytaj o takich cudach jak wskaźniki, o dynamicznym przydzielaniu pamięci i czym ono różni się od przydzielania statycznego. Mi też się kiedyś wydawało, że operator -> jest całkiem zbędny bo kropka załatwia wszystko - tak się składa, że to dobrze, że są dwa osobne operatory. Kropka pozwala na dostęp do pola obiektu tworzonego statycznie [1], a operator -> do dostępu do pola obiektu tworzonego dynamicznie.
[1] wyjątkiem jest: (*Obiekt) . pole
Jeśli chcesz programować w C++ musisz wiedzieć, jak wygląda przydzielania pamięci
|
|
1 « 2 » |