Wczytywanie znaków na stos
Ostatnio zmodyfikowano 2016-03-20 18:20
szymi_jimi Temat założony przez niniejszego użytkownika |
» 2016-03-20 16:38:45 Po rozrysowaniu na kartce udało mi się pojąć, tylko z moich wniosków ty przyjąłeś 'old' jako 'next' a 'next' jako 'old' wiem, że to tylko nazwy, ale dla mnie jako początkującego to ważne, bo tak to łatwo jest się pogubić ;) Przerobiłem obie funkcje tak jakby "pod siebie" tak aby zrozumieć. Mam jeszcze pytanie, czy w drugiej funkcji funkcja free oraz przypisanie *top wartości NULL? Przecież, niżej przypisujemy wskaźnikowi top, wartość wskaźnika next... node push( node ** top, char znak ) { node * new_node =( node * ) malloc( sizeof( node ) ); if( new_node != NULL ) { new_node->next = * top; new_node->old = NULL; ( * top ) = new_node; new_node->data = znak; } } node * pop( node ** top ) { char znak =( * top )->data; node * temp =( * top )->next; free( * top ); * top = NULL; * top = temp; if( * top )( * top )->old = NULL; return znak; }
|
|
mateczek |
» 2016-03-20 16:46:51 free() jest potrzebna bo zwalnia pamięć po elemencie zdejmowanym ze stosu (aby nie było wycieków pamięci). A przypisanie NULL zrobiłem z automatu po to by wskaźnik nie pokazywał śmieci (przyzwyczajenie). Przypisanie do wskaźnika wartości NULL jest oczywiście zbędne. |
|
szymi_jimi Temat założony przez niniejszego użytkownika |
» 2016-03-20 18:20:27 Ok, dzięki wielkie za rozjaśnienie i wytłumaczenie :) |
|
1 « 2 » |