Advertisement
barbos01

temaTAP4

Mar 27th, 2022
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.62 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. using namespace std;
  4. /*
  5. functie care face adaugarea unui element;
  6. functie care face listarea elementelor listei;
  7. functe care face extragerea unui element cu o informatie utila data.
  8. */
  9.  
  10. struct nod
  11. {
  12.     int informatie;
  13.     nod *urmator,*inapoi;
  14. };
  15.  
  16. //initializare
  17. void init(nod* &cap, nod* &coada)
  18. {
  19.     cap = coada = NULL;
  20. }
  21.  
  22. //afisam lista de la cap la coada
  23. void afisareLista(nod *cap,nod *coada)
  24. {
  25.     if(cap == NULL)
  26.     {
  27.         cout<<"Lista nu are elemente!!!\n\n";
  28.     }
  29.     else
  30.     {
  31.         cout<<"Lista circulara dublu inlantuita este: ";
  32.         while(cap != NULL)
  33.         {
  34.             cout<<cap->informatie<<", ";
  35.             if(cap == coada)
  36.                 cap = NULL;
  37.             else
  38.                 cap = cap->urmator;
  39.         }
  40.         cout<<"\n\n";
  41.     }
  42. }
  43.  
  44. //extragerea ultimului element adaugat in lista
  45. void extragereUltim(nod* &cap, nod* &coada)
  46. {
  47.     if(cap == NULL)
  48.     {
  49.         cout<<"Lista nu are elemente!!!\n\n";
  50.     }
  51.     else if(cap == coada)
  52.     {
  53.         cout<<"Informatia extrasa este: "<<cap->informatie<<"\n\n";
  54.         nod* del = cap;
  55.         cap = cap->urmator;
  56.         cap->inapoi = coada;
  57.         delete del;
  58.         cap=coada=NULL;
  59.     }
  60.     else
  61.     {
  62.         cout<<"Informatia extrasa este: "<<cap->informatie<<"\n\n";
  63.         nod* del = cap;
  64.         cap = cap->urmator;
  65.         cap->inapoi = coada;
  66.         delete del;
  67.     }
  68.  
  69.  
  70. }
  71.  
  72.  
  73. //adaugam un element in fata capului listei
  74. void inserareLista(nod* &cap,nod* &coada,int informatie)
  75. {
  76.     nod *New = new nod;
  77.     New->informatie = informatie;
  78.  
  79.     if(cap == NULL)  //daca lista este goala capul si coada sunt aceleasi
  80.     {
  81.         cap = coada = New;
  82.         New->urmator = coada;
  83.         New->inapoi = cap;
  84.     }
  85.     else if(cap == coada) //daca avem un singur element
  86.     {
  87.         New->urmator = coada;
  88.         New->inapoi = coada;
  89.         cap = New;
  90.         coada->urmator = New;
  91.         coada->inapoi = New;
  92.     }
  93.     else
  94. //in caz contrar noul element devine capul listei
  95.     {
  96.         New->urmator = cap;
  97.         cap->inapoi = New;
  98.         New->inapoi = coada;
  99.         coada->urmator = New;
  100.         cap = New;
  101.     }
  102. }
  103.  
  104.  
  105.  
  106.  
  107.  
  108. int main()
  109. {
  110.     nod *cap;
  111.     nod *coada;
  112.     init(cap, coada);
  113.     inserareLista(cap, coada, 10);
  114.     inserareLista(cap, coada, 20);
  115.     inserareLista(cap, coada, 30);
  116.     inserareLista(cap, coada, 40);
  117.     inserareLista(cap, coada, 50);
  118.     afisareLista(cap, coada);
  119.     extragereUltim(cap, coada);
  120.     afisareLista(cap, coada);
  121.     extragereUltim(cap, coada);
  122.     afisareLista(cap, coada);
  123.     return 0;
  124. }
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement