listy jednokierunkowe
Ostatnio zmodyfikowano 2015-07-07 00:06
heroarthur Temat założony przez niniejszego użytkownika |
listy jednokierunkowe » 2015-07-06 23:30:40 Witajcie, robie zwykłą liste jednokierunkową (tą co ma człon informacyjny ze wskaznikami ogon, glowa oraz elementy gdzie kazdy zawiera wartosc i wsaznik na następny element) mam w niej funkcje dorzuc_1 ktora dodaje zwyczajnie jeden element i funkcje wypisz (obie kolejno ponizej) ktore ladnie dzialaja i wypisuja poprawnie zawartosc listy, natomiast gdy zamiast dorzuc_1 uzyje innego jej odpowiednika (listing na samym dole) to w funkcji wypisz sie zapętla i wypisuje cały czas ostatni elemement void LISTA::dorzuc_1( int x ) { ELEMENT * q = new ELEMENT; q->nastepny = NULL; q->wartosc = x; if( inf.glowa == NULL ) { inf.glowa = q; inf.ogon = q; } else { ( inf.ogon )->nastepny = q; ( inf.ogon ) = q; } }
void LISTA::wypisz_zawartosc() { ELEMENT * q = new ELEMENT; q = inf.glowa; while( q != NULL ) { cout << q->wartosc << " "; q = q->nastepny; } }
tutaj ten odpowiednik wspomniany, postanowilem w nim nie przydzielac dynamicznie pamieci tylko zrobic to inaczej, uzywajac znaczkow & (czyli wyluskujac adres) i dla czego to nie dziala poprawnie? proszę o jakąś wypowiedź odnośnie tego co źle robie ze wskaźnikami, jak to jest z tymi listami, o czym zapomniałem itd void LISTA::dorzuc_1( int x ) { ELEMENT q; q.nastepny = NULL; q.wartosc = x; if( inf.glowa == NULL ) { inf.glowa = & q; inf.ogon = & q; } else { ( inf.ogon )->nastepny = & q; ( inf.ogon ) = & q; } }
[ cpp ]
|
|
pekfos |
» 2015-07-06 23:45:34 dla czego to nie dziala poprawnie? |
A jak myślisz? Cała lista to powiązany ze sobą jeden element, który nie istnieje poza dorzuc_1(). ELEMENT * q = new ELEMENT; q = inf.glowa;
|
Nie rozumiesz swojego kodu. |
|
heroarthur Temat założony przez niniejszego użytkownika |
RE:pekfos » 2015-07-06 23:58:08 aha, czyli chodzi o to że robiąc ELEMENT *q = new ELEMENT; rezerwuje miejsce w pamięci, a jak robie tylko Element q; to ona jest zmienną lokalną i po wyjsciu z funkcji dorzuc_1 pamiec jego jest zwalniana zatem z listy juz nie mozna potem sie do niego odwolać? A to z tym nie rozumiesz własne... to chodziło o to że rezerwuje pamięc pod wskaznik q , a potem q ustawiam na ja jakies inne pole pamięci czyli bez sensu jakby? |
|
pekfos |
» 2015-07-07 00:03:26 Tak. Tak, bez sensu. |
|
heroarthur Temat założony przez niniejszego użytkownika |
dzięki » 2015-07-07 00:06:43 dzięki za celną i lakoniczną odpowiedź xd, to chyba zamkne temat |
|
« 1 » |