Untitled

mail@pastecode.io avatar
unknown
javascript
2 months ago
799 B
2
Indexable
Never
const predFilter = (list, pred) => {
    if (null == list)
        return;
        
    // list è la lista (prima chiamata) oppure un nodo interno, in ogni caso devo iniziare i controlli dal next perché:
    // lista: il primo nodo sta in list.next
    // nodo: list a questo punto è un nodo che non soddisfa pred, quindi iniziamo dal togliere quelli successivi
    let node = list.next;
    
    // fintanto che non arrivo alla fine (node == null) e trovo nodi che soddisfano pred
    while(node && pred(node.val))
        node = node.next // passo al nodo successivo
        
    // qui node è null oppure ha un valore che non soddisfa pred
    list.next = node; // qui lo appendo alla lista (prima chiamata) o a un nodo interno
    predFilter(list.next, pred) // ricomincio dal nodo trovato
}
Leave a Comment