Advertisement
fcamuso

Algoritmi lezione 28 - Linked List con C++, parte 1

Jun 29th, 2024
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <memory>
  3.  
  4. template <typename T>
  5. class ListaConcatenata {
  6. private:
  7. // Nodo della lista
  8. class Nodo {
  9. public:
  10. T dati;
  11.  
  12. std::unique_ptr<Nodo> successivo = nullptr;
  13.  
  14. //Nodo(T i_dati) { dati = i_dati;}
  15. Nodo(T i_dati) : dati(i_dati) {}
  16. };
  17.  
  18. std::unique_ptr<Nodo> testa = nullptr;
  19. Nodo* coda = nullptr;
  20.  
  21. public:
  22. ListaConcatenata() {}
  23.  
  24. // Aggiunge un elemento all'inizio della lista
  25. void inserisci_in_testa(T i_dati) {
  26. auto nuovo = std::make_unique<Nodo>(i_dati);
  27. if (!testa) {
  28. coda = nuovo.get();
  29. }
  30.  
  31. //std::cout << "testa PRIMA: " << testa.get() << std::endl;
  32. nuovo->successivo = std::move(testa);
  33. //std::cout << "testa DOPO: " << testa.get() << std::endl;
  34.  
  35. testa = std::move(nuovo);
  36. }
  37.  
  38. // Stampa gli elementi della lista
  39. void stampa() const {
  40. Nodo* temp = testa.get();
  41. while (temp) {
  42. std::cout << temp->dati << " -> ";
  43. temp = temp->successivo.get();
  44. }
  45. std::cout << "nullptr" << std::endl;
  46. }
  47.  
  48.  
  49. };
  50.  
  51. int main() {
  52. ListaConcatenata<int> lista_numeri;
  53.  
  54. lista_numeri.inserisci_in_testa(1);
  55. lista_numeri.inserisci_in_testa(2);
  56. lista_numeri.inserisci_in_testa(3);
  57. lista_numeri.inserisci_in_testa(4);
  58.  
  59. std::cout << "lista_numeri: ";
  60. lista_numeri.stampa();
  61.  
  62. return 0;
  63. }
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement