← Subiecte de Titularizare
Titularizare 2018 · Subiectul II, problema 1

Liste înlănțuite — simulator

II.1 subprogram Liste Șiruri caractere Matrice Backtracking
II.2 eficient Greedy intervale Reuniune Interclasare LIS LIS tije LCS Kadane Frecvențe Căutare binară
pas 0 / 0
📋 Enunțul problemei (Titularizare 2018)

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.

startApasă „Pas înainte”. Fiecare săgeată e etichetată cu valoarea nodului spre care arată — așa se vede exact ce legătură se schimbă și când.

Lista înlănțuită fiecare săgeată arată spre ce valoare indică

nodul nou / legătura tocmai creată nodul q (căutarea poziției) legătura care urmează să fie înlocuită rezultatul căutării

Starea algoritmului ce se întâmplă cu legăturile

Codul C++ linia activă e evidențiată

Cod C++

    

Algoritmul în limbaj natural pasul curent e evidențiat