podział łańcucha na 2 łańcuchy według wartości ;przepinanie łańcucha

0

Problem jest treści następującej: mam przykładowo łańcuch wejściowy składający się z:

struct node {
    int value;
    node* next;
};

nie rozumiem punktu, w którym do nowego łańcucha przypisywana jest wartość 

while(in != NULL){                                            //in-łańcuch do rozdzielenia; out1,out2-łańcuchy na oderwane elementy
        node* next = in->next;
        // przepinaym element do odpowiednich lancuchow
        if(isMultipleOfSquareOfPrimaryNumber(in->value)){                     //warunek nieistotny w pytaniu
            in->next = out1;
            out1 = in;
        }else{
            in->next = out2;
            out2 = in;
        }
        in = next;
    }  

nie rozumiem po co pod następny element in przypisujemy out1 lub out2 zdaje mi się że zwykłe doklejenie out1->next=in byłoby chyba wystarczające oczywiście po sprawdzeniu czy nie wstawiamy za NULLEM w wypadku NULL po prostu out1=in

0

Ale wtedy nie miałbyś listy jednokierunkowej. Jeżeli in jest ostatnim elementem to aby dodać coś do listy musisz przekazać do wskaźnika in->next adres struktury out.

1 użytkowników online, w tym zalogowanych: 0, gości: 1