Lista de probleme 30

Filtrare

Să se scrie o funcție C++ care inserează înaintea fiecărui element par al unei liste simplu înlănțuită dublul său.

Să se scrie o funcție care interclasează nodurile a două liste.

#4170 FLsiDesc C++

Să se scrie o funcție C++ care inserează noduri astfel încât în final lista va memora în ordine descrescătoare toate numerele de la n la 1, unde n este valoarea memorată inițial în primul nod al listei.

#2563 FAdCresc C++

Să se scrie o funcție C++ care inserează într-o listă simplu înlănțuită cu elementele ordonate crescător un nou nod care memorează valoarea x astfel încât informațiile din lista să fie în continuare ordonate crescător.

#1476 FSortare C++

Să se scrie o funcție C++ care sortează crescător elementele unei liste simplu înlănţuite.

Sa se verifice dacă o listă simplu înlănțuită formează un palindrom.

Se consideră un șir de n numere întregi, cu n număr natural nenul. Se elimină primul element din șir și toate elementele șirului aflate pe poziții care reprezintă numere prime, în ordinea crescătoare a pozițiilor. Operația de eliminare se repetă cu elementele rămase în șir, repoziționate după eliminarea celorlalte, până când este eliminat și ultimul element rămas.

Să se scrie un program care afișează elementele șirului inițial, în ordinea în care au fost eliminate conform algoritmului descris mai sus.

Se consideră o listă circulară simplu înlănțuită, alocată dinamic, cu n elemente, numere naturale citite de la tastatură; primul element al acestei liste este considerat element curent. Se citesc m numere naturale și pentru fiecare se aplică următoarea operație:

  • pentru numărul citit x elementul curent al listei avansează cu x poziții;
  • după elementul curent actual se inserează dublul său și elementul inserat devine element curent.

Să se afișeze elementele listei după cele m operații. Afișarea începe cu elementul care a fost element curent imediat după citire.

Să se scrie o funcție care să elimine nodurile care conțin duplicate dintr-o listă care are valorile ordonate crescător.

#2847 List

Se dă o listă simplu înlănțuită care conține n perechi de numere naturale (a,b). Fiecare pereche este stocată în câte un nod al listei; notăm cu a primul număr stocat într-un nod și cu b al doilea număr stocat în acel nod.

Se cere să se insereze în listă astfel:

Dacă pentru nodul curent:

  1. a este par și b este impar se inserează după nodul curent un nou nod, care conține dublul sumei lor pe prima poziție a nodului inserat iar pe a doua poziție diferența dintre dublul sumei numerelor din nodul curent și al doilea număr din nodul curent;
  2. a este impar, b este par se inserează înaintea nodului curent un nou nod, care conține dublul sumei lor pe a doua poziție a nodului inserat și pe prima poziție diferența dintre dublul sumei numerelor din nodul curent și a primului număr din nodul curent;
  3. a este par, b este par se inserează după nodul curent un nou nod, care conține jumătatea sumei lor pe prima poziție a nodului inserat iar pe a doua poziție suma dintre jumătatea sumei numerelor din nodul curent și al doilea număr din nodul curent;
  4. a este impar, b este impar se inserează înaintea nodului curent un nou nod, care conține jumătatea sumei lor pe a doua poziție a nodului inserat și pe prima poziție suma dintre jumătatea sumei numerelor din nodul curent și a primului număr din nodul curent.