Subprogramul caut(p, x) primește adresa primului element al unei liste simplu înlănțuite ordonate crescător și un număr x. Returnează adresa nodului care reține cel mai mare număr din intervalul [1, x], sau adresa nulă dacă nu există.
Programul citește numere, construiește lista menținând ordinea crescătoare (inserare ordonată), apoi apelează subprogramul.
Exemplu: pentru 12 4 20 7 1 15 lista devine 1 4 7 12 15 20; pentru x = 10 se afișează 7.
Ce urmărim aici: cele două legături care se rescriu la fiecare inserare și ordinea lor. Inversate, lista se rupe și pierzi jumătate din punctaj.