Untitled
unknown
javascript
2 years ago
799 B
22
Indexable
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
}Editor is loading...
Leave a Comment