Junior
Quali sono le strutture dati esistenti?
sobes.tech AI
Risposta dell'AI
Le strutture dati sono suddivise in due categorie principali:
-
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
- Array: Dimensione fissa, accesso diretto tramite indice.
-
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
- Albero (Tree): Struttura gerarchica con nodo radice e discendenti.