Advertisement
fcamuso

Corso recupero c++ 43

Jan 26th, 2025
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct Nodo {
  6.   string dato = "";
  7.  
  8.   Nodo *next = nullptr;
  9. };
  10.  
  11.  
  12.  
  13. void ins_testa(Nodo *&il, Nodo *nuovo)
  14. {
  15.  
  16.   if (il==nullptr)
  17.   {
  18.     nuovo->next = nuovo;
  19.     il = nuovo;
  20.   }
  21.   else
  22.   {
  23.     //portiamo un puntatore sull'ultimo nodo
  24.     Nodo *ultimo=il;
  25.     while (ultimo->next != il) ultimo = ultimo->next;
  26.  
  27.     nuovo->next = il;
  28.     il = nuovo;
  29.  
  30.     //ricostruiamo la circolarita
  31.     ultimo->next = il;
  32.   }
  33. }
  34.  
  35.  
  36.  
  37. void ins_coda(Nodo *&il, Nodo *nuovo)
  38. {
  39.   if (il == nullptr) //lista vuota ?
  40.   {
  41.     nuovo->next = il;
  42.     il = nuovo;
  43.     il ->next = il; //circolarita'
  44.   }
  45.   else
  46.   {
  47.     Nodo *ultimo = il;
  48.  
  49.     //otteniamo un puntatore all'ultimo nodo attuale
  50.     while(ultimo->next != il) ultimo = ultimo->next;
  51.  
  52.     ultimo->next = nuovo;
  53.     nuovo->next = il;
  54.   }
  55. }
  56.  
  57. //si assume che si chieda di stampare tutta la lista
  58. //diversamtente bisogna passare anche il
  59. void stampa(Nodo *p)
  60. {
  61.   Nodo *il_copia = p;
  62.  
  63.   if (p!=nullptr)
  64.   {
  65.     do
  66.     {
  67.       cout << p->dato << " ";
  68.  
  69.       //al prossimo nodo
  70.       p = p->next;
  71.     } while (p!=il_copia);
  72.   }
  73. }
  74.  
  75. int main()
  76. {
  77.  
  78.     Nodo *il = nullptr;
  79.     stampa(il);
  80.  
  81.     Nodo *nuovo = new Nodo;
  82.     nuovo->dato = "1";
  83.     ins_testa(il, nuovo);
  84.     //stampa(il);
  85.  
  86. //
  87.     nuovo = new Nodo;
  88.     nuovo->dato = "2";
  89.     ins_testa(il, nuovo);
  90.     stampa(il);
  91.  
  92.  
  93.  
  94.  
  95.     return 0;
  96. }
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement