Sobes.tech
Junior

Ce structuri de date există?

sobes.tech AI

Răspuns de la AI

Structurile de date sunt împărțite în două categorii principale:

  1. ** Liniare**: Elementele sunt aranjate secvențial.

    • Array (Tablou): Dimensiune fixă, acces direct după index.
      int[] numbers = { 1, 2, 3, 4, 5 }; // Exemplu de declarație
      
    • Listă (List): Dimensiune dinamică, elementele sunt adăugate și eliminate.
      System.Collections.Generic.List<string> names = new System.Collections.Generic.List<string>();
      names.Add("Alice");
      names.Add("Bob");
      
    • Listă legată (Linked List): Elementele (nodo-urile) conțin o referință la următorul (și posibil la anteriorul).
      • Singură legată
      • Dublu legată
      System.Collections.Generic.LinkedList<char> letters = new System.Collections.Generic.LinkedList<char>();
      letters.AddLast('A');
      letters.AddLast('B');
      
    • Stivă (Stack): Ultimul intrat, primul ieșit (LIFO).
      System.Collections.Generic.Stack<int> stack = new System.Collections.Generic.Stack<int>();
      stack.Push(10); // Adaugă element în vârful stivei
      int item = stack.Pop(); // Elimină și returnează elementul din vârf
      
    • Coada (Queue): Primul intrat, primul ieșit (FIFO).
      System.Collections.Generic.Queue<string> queue = new System.Collections.Generic.Queue<string>();
      queue.Enqueue("Task 1"); // Adaugă element la sfârșit
      string task = queue.Dequeue(); // Elimină și returnează elementul din început
      
  2. Nelinieare: Elementele nu sunt aranjate secvențial.

    • Copac (Tree): Structură ierarhică cu nod rădăcină și descendenți.
      • Copac binar
      • Copac B
      • Copac roșu-negru
      • Copac AVL
    • Graf (Graph): Set de vârfuri (noduri) și muchii (legături) între ele.
      • Orientat (Directed)
      • Neorientat (Undirected)
    • Tabel hash (Hash Table) / Dicționar (Dictionary): Stochează perechi cheie-valoare, folosind o funcție hash pentru căutare rapidă.
      System.Collections.Generic.Dictionary<string, int> ageByName = new System.Collections.Generic.Dictionary<string, int>();
      ageByName.Add("Charlie", 30);
      int age = ageByName["Charlie"]; // Acces rapid după cheie
      
    • Mulțime (Set): Colecție de elemente unice fără o ordine specifică.
      System.Collections.Generic.HashSet<int> uniqueNumbers = new System.Collections.Generic.HashSet<int>();
      uniqueNumbers.Add(5);
      uniqueNumbers.Add(10);
      uniqueNumbers.Add(5); // Dublura nu va fi adăugată