hopingsteam

Liste simplu inlantuite in C

Mar 15th, 2020
234
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include    <stdio.h>
  2. #include    <stdlib.h>
  3.  
  4. struct Nod
  5. {
  6.     int numar;             //Memorarea efectiva a numarului
  7.     struct Nod* urmator;   //Memorarea legaturii catre urmatorul nod
  8. };
  9.  
  10. void parcurgere(struct Nod* n)
  11. {
  12.     while (n != NULL) // Cat timp nu am ajuns la NULL (capat)
  13.     {
  14.         printf(" %d ", n->numar); // Afisam numarul
  15.         n = n->urmator; // Mutam nodul "n" catre urmatorul din lista
  16.     }
  17.     printf("\n");
  18. }
  19.  
  20. void stergereElement(struct Nod* predecesor)
  21. {
  22.     struct Nod* victima = predecesor->urmator;
  23.  
  24.     predecesor->urmator = predecesor->urmator->urmator;
  25.  
  26.     free(victima); // Elibereaza memoria
  27. }
  28.  
  29. int main()
  30. {
  31.     //Delaram cele 3 noduri
  32.     struct Nod* n1 = NULL;
  33.     struct Nod* n2 = NULL;
  34.     struct Nod* n3 = NULL;
  35.  
  36.     /* Alocam memorie pentru cele 3 noduri
  37.        Fara astea 3 linii nu merge deloc programul
  38.        In C++ in schimb se aloca automat si nu e nevoie sa scrii mizeria asta */
  39.     n1 = (struct Nod*)malloc(sizeof(struct Nod));
  40.     n2 = (struct Nod*)malloc(sizeof(struct Nod));
  41.     n3 = (struct Nod*)malloc(sizeof(struct Nod));
  42.  
  43.     //Ii dam la primul valoarea 13 si il legam de al doilea
  44.     n1->numar = 13;
  45.     n1->urmator = n2;
  46.  
  47.     //Ii dam la al doilea valoarea 17 si il legam de al treilea
  48.     n2->numar = 17;
  49.     n2->urmator = n3;
  50.  
  51.     //Ii dam la al treilea valoarea 2 si il legam de NULL (nimic)
  52.     n3->numar = 2;
  53.     n3->urmator = NULL; //daca e NULL, inseamna ca nu mai vine nimic (deci e capat)
  54.  
  55.     parcurgere(n1);
  56.     stergereElement(n1); // Va sterge elementul ce urmeaza dupa n1 (adica n2)
  57.     parcurgere(n1);
  58.     return 0;
  59. }
RAW Paste Data