1. Discutarea unor teme din curs și de la disciplina „Structuri de date”

In acest laborator vom discuta si vom face exercitii despre:

structuri de date de tip liste simple și dublu înlănțuite, stive, cozi

  • implementarea statică (folosind tablouri) a unor structuri de date de tip stive, cozi etc
  • implementarea dinamică (folosind liste înlănțuite) a unor structuri de date de tip stive, cozi etc

2. Exerciții și probleme

  • Pentru primul exercitiu rezolvat corect, studentul poate primi maxim 1 punct. Pentru al doilea, maxim 0,5 p.
  • Exercitiile se vor rezolva scriind Clean Code, cu functii pentru fiecare operatie necesara, fara variabile globale, cu apelarea functiilor din main, pentru testare.
  • Functiile vor avea nume sugestive, vor face un singur lucru, vor avea parametrii transmisi corect.
  • Datele de intrare se vor citi dintr-un fisier si rezultatele vor fi afisate fie pe ecran, fie in alt fisier.
  • Toate exercitiile se vor rezolva doar cu liste inlantuite, tratandu-se si cazurile de exceptie (de exemplu: lista vida, lista cu un singur element, cu doua, lista doar cu numere pare, lista doar cu numere impare, coada sau stiva vida, operatia pop pentru o stiva vida etc.).
  • Nu se vor folosi vectori, siruri de caractere sau matrice.
  • Studentii pot consulta paginile cursurilor de Structuri de date si de Introducere in programare.
  1. Să se scrie o funcție C++ care adaugă o valoarea la finalul unei liste simplu înlănțuită.
  2. Să se scrie o funcție C++ care afișează pe ecran valorile memorate într-o lista simplu înlănțuită.
  3. Să se scrie o funcție C++ care determină suma elementelor impare dintr-o lista simplu înlănțuită care sunt situate între două elemente pare.
  4. Să se scrie o funcție C++ care adaugă o valoarea la începutul unei liste simplu înlănțuită.
  5. Să se scrie o funcție C++ care șterge primul element al unei liste simplu înlănțuită.
  6. Să se scrie o funcție C++ care determină câte perechi de elemente prime între ele sunt memorate într-o lista simplu înlănțuită.
  7. Să se scrie o funcție C++ care inserează o anumită valoare înaintea unui element dat dintr-o lista simplu înlănțuită.
  8. Să se scrie o funcție C++ care inserează după fiecare element par al unei liste simplu înlănțuită dublul său.
  9. Să se scrie o funcție C++ care determină câte elemente sunt memorate într-o lista simplu înlănțuită.
  10. Să se scrie o funcție C++ care determină câte perechi de elemente consecutive egale sunt memorate într-o lista simplu înlănțuită.
  11. Să se scrie o funcție C++ care determină șterge dintr-o lista simplu înlănțuită elementul situat după un element dat.
  12. Să se scrie o funcție C++ care determină șterge dintr-o lista simplu înlănțuită un element dat.
  13. Să se scrie o funcție C++ care șterge dintr-o lista simplu înlănțuită toate elementele pare.
  14. Să se scrie o funcție C++ care inserează o anumită valoare după un element dat dintr-o lista simplu înlănțuită.
  15. Să se scrie o funcție C++ care inserează înaintea fiecărui element par al unei liste simplu înlănțuită dublul său.
  16. Să se scrie o funcție C++ care sortează crescător elementele unei liste simplu înlănţuite.
  17. Sa se verifice dacă o listă simplu înlănțuită formează un palindrom.
  18. Să se scrie un program care gestionează o stivă de numere întregi. Inițial stiva este vidă. Programul va citi de la tastatură o listă de operații, care pot fi:
    • push X – adaugă valoarea întreagă X pe stivă;
    • pop – elimină elementul din vârful stivei;
    • top – afișează elementul din vârful stivei.  Programul va realiza asupra stivei operațiile citite, în ordine. Afișările se fac pe ecran, câte o valoare pe linie.
  19. Să se scrie o funcție C++ care determină suma elementelor impare dintr-o lista simplu înlănțuită care sunt situate între două elemente pare.
  20. Să se scrie o funcție C++ care determină câte perechi de elemente prime între ele sunt memorate într-o lista simplu înlănțuită, pe pozitii consecutive.
  21. Să se scrie o funcție C++ care inserează o anumită valoare înaintea fiecarui element divizibil prin lungimea initiala listei, dintr-o lista simplu înlănțuită.
  22. Să se scrie o funcție C++ care inserează după fiecare element par al unei liste simplu înlănțuită dublul sumei cifrelor sale.
  23. Să se scrie o funcție C++ care interclaseaza doua liste simplu inlantuite care sunt ordonate crescator.
  24. Să se scrie o funcție C++ care determină câte perechi de elemente consecutive egale sunt memorate într-o lista simplu înlănțuită.
  25. Să se scrie o funcție C++ care șterge dintr-o lista simplu înlănțuită toate elementele pare.
  26. Să se scrie o funcție C++ care inserează înaintea fiecărui element par al unei liste simplu înlănțuită dublul factorialului său.
  27. Să se scrie o funcție C++ care sortează crescător elementele unei liste simplu înlănţuite.
  28. Sa se verifice dacă o listă simplu înlănțuită formează un palindrom.
  29. Sa se verifice dacă o listă dublu înlănțuită formează un palindrom.
  30. Sa se elimine dintr-o listă dublu înlănțuită toate elementele egale cu media aritmetica a vecinilor sai.
  31. Să se scrie un program care gestionează o stivă de numere întregi. Inițial stiva este vidă. Programul va citi de la tastatură o listă de operații, care pot fi:
    • push X – adaugă valoarea întreagă X pe stivă;
    • pop – elimină elementul din vârful stivei;
    • top – afișează elementul din vârful stivei.  Programul va realiza asupra stivei operațiile citite, în ordine. Afișările se fac pe ecran, câte o valoare pe linie.