Sobes.tech
Junior

Quali sono le strutture dati esistenti?

sobes.tech AI

Risposta dell'AI

Le strutture dati sono suddivise in due categorie principali:

  1. Lineari: Gli elementi sono disposti sequenzialmente.

    • Array: Dimensione fissa, accesso diretto tramite indice.
      int[] numbers = { 1, 2, 3, 4, 5 }; // Esempio di dichiarazione
      
    • Lista (List): Dimensione dinamica, gli elementi vengono aggiunti e rimossi.
      System.Collections.Generic.List<string> names = new System.Collections.Generic.List<string>();
      names.Add("Alice");
      names.Add("Bob");
      
    • Lista collegata (Linked List): Gli elementi (nodi) contengono un riferimento al successivo (e possibilmente al precedente).
      • Singolarmente collegata
      • Doppia collegata
      System.Collections.Generic.LinkedList<char> letters = new System.Collections.Generic.LinkedList<char>();
      letters.AddLast('A');
      letters.AddLast('B');
      
    • Stack (Pila): Ultimo arrivato, primo uscito (LIFO).
      System.Collections.Generic.Stack<int> stack = new System.Collections.Generic.Stack<int>();
      stack.Push(10); // Aggiunge un elemento in cima
      int item = stack.Pop(); // Rimuove e restituisce l'elemento in cima
      
    • Coda (Queue): Primo arrivato, primo uscito (FIFO).
      System.Collections.Generic.Queue<string> queue = new System.Collections.Generic.Queue<string>();
      queue.Enqueue("Task 1"); // Aggiunge un elemento alla fine
      string task = queue.Dequeue(); // Rimuove e restituisce l'elemento all'inizio
      
  2. Non lineari: Gli elementi non sono disposti sequenzialmente.

    • Albero (Tree): Struttura gerarchica con nodo radice e discendenti.
      • Albero binario
      • Albero B
      • Albero rosso-nero
      • Albero AVL
    • Grafico (Graph): Insieme di vertici (nodi) e spigoli (connessioni) tra di loro.
      • Orientato (Directed)
      • Non orientato (Undirected)
    • Tabella hash (Hash Table) / Dizionario (Dictionary): Memorizzano coppie chiave-valore, utilizzando una funzione hash per una ricerca rapida.
      System.Collections.Generic.Dictionary<string, int> ageByName = new System.Collections.Generic.Dictionary<string, int>();
      ageByName.Add("Charlie", 30);
      int age = ageByName["Charlie"]; // Accesso rapido tramite chiave
      
    • Set (Insieme): Collezione di elementi unici senza un ordine specifico.
      System.Collections.Generic.HashSet<int> uniqueNumbers = new System.Collections.Generic.HashSet<int>();
      uniqueNumbers.Add(5);
      uniqueNumbers.Add(10);
      uniqueNumbers.Add(5); // Il duplicato non verrà aggiunto