Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie znaków na stos

Ostatnio zmodyfikowano 2016-03-20 18:20
Autor Wiadomość
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...

C/C++
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 ); // czy te 2 linijki kodu
    * top = NULL; //  są potrzebne?
    * top = temp;
    if( * top )( * top )->old = NULL;
   
    return znak;
}
P-146281
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.
P-146282
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 :)
P-146286
1 « 2 »
Poprzednia strona Strona 2 z 2