Menu
Coddy logo textTech
Percorso di apprendimento

Algoritmi e strutture dati in Dart

Le librerie di base di Dart vanno più lontano della maggior parte, con una Queue, una LinkedList e gli splay tree in dart:collection, ma l'SDK di base non ha né heap né coda di priorità. Questo percorso ti fa costruire ogni struttura in Dart, dove la null safety rende ogni collegamento mancante un Node? da controllare, poi le usi per ordinare, ricorrere e visitare grafi, e concludi con problemi da colloquio valutati. Gratis, nel browser, con un certificato nella maggior parte dei corsi.

377 lezioni228 sfide702 domande del quiz

Algoritmi e strutture dati in Dart, passo dopo passo

38 corsi377 lezioni228 sfide702 domande del quiz

Ogni passaggio è un insieme di corsi Coddy già esistenti, e ogni pulsante Inizia li apre in Dart. I tre corsi non ancora insegnati in Dart sono elencati dopo i passaggi.

  1. 1
    Inizia questo passoIniziaPila, coda, albero binario, tabella hash e lista concatenata, ognuno costruito da zero in Dart e poi usato per risolvere problemi. Alla fine sai cosa fanno per te List, Queue e Map, e perché un letterale Map ricorda l'ordine in cui hai inserito le chiavi.Inizia
  2. 2
    Inizia questo passoIniziaLista doppiamente concatenata, heap e code di priorità, trie, grafi e l'albero AVL autobilanciato. Alla fine, DoubleLinkedQueue è una struttura che hai scritto tu, l'heap che manca all'SDK di base è uno che sai scrivere, e SplayTreeMap è un albero ordinato che capisci: autoregolante dove il tuo è bilanciato in altezza.Inizia
  3. 3
    Inizia questo passoIniziaBubble sort, selection, insertion, merge, quick, heap, counting e radix sort, scritti in Dart e osservati nel visualizzatore. List.sort accetta un comparatore come (a, b) => a.compareTo(b); dopo questo passaggio sai scrivere l'algoritmo dietro quella chiamata.Inizia
  4. 4
    Inizia questo passoIniziaSfide di ricorsione in Dart, dove la null safety rende esplicito il caso base: una funzione su un Node? deve gestire null prima di poter ricorrere, e la promozione di tipo le permette poi di usare liberamente il nodo dopo quel controllo. Una ricorsione fuori controllo termina con uno StackOverflowError. La programmazione dinamica e la manipolazione dei bit sono elencate dopo i passaggi, perché sono insegnate in Python e in C++.IniziaPagina dedicata
  5. 5
    Inizia questo passoIniziaRicerca in ampiezza e in profondità, Dijkstra, Bellman-Ford, ordinamento topologico, Kruskal e Prim in Dart, sul grafo che hai costruito nel secondo passaggio. L'SDK di base non ha una coda di priorità, quindi l'heap del secondo passaggio è quello che serve a Dijkstra.Inizia
  6. 6
Cosa ottieni
Tutto ciò che userai per imparare a programmare

Impara facendo

Scrivi codice vero, interroga database, crea siti web e padroneggia i prompt per l'AI. Le nostre lezioni interattive coprono tutte le competenze di cui ha bisogno uno sviluppatore moderno.

playground.js
Editor di codice
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Input
"Alex"
Output
"Hello, Coddy! Alex"

Costruisci la tua serie

Sii costante e guarda crescere i tuoi progressi! Tieni traccia della tua abitudine quotidiana di programmare, proteggi la tua serie con i giorni di congelamento e guadagna ricompense ogni giorno che ti presenti.

12 giorni di serie

Torna domani per mantenere la tua serie!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Lascia o raddoppia

Giorno 5 di 7

fire Freeze icon

Congela serie

2 left

Programma ovunque

Porta il tuo percorso di programmazione sempre con te! Niente configurazioni, niente download: apri l'app e inizia a programmare. Disponibile su iOS, Android e Web con valutazioni di 4,9 stelle.

Python
7Serie
250Punteggio
5Energia
Variabili
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
CONTINUA
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Percorso
Obiettivi
Classifica
Profilo
4.9
StellaStellaStellaStellaStella
Valutazione

Non sei solo

Competi nelle classifiche globali, invita gli amici per guadagnare ricompense e festeggiate insieme i vostri successi. Programmare è più bello con gli amici!

Lega Sfidante
Lega SfidanteI primi 7 avanzano
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconZona promozioneleaderboard Arrow Up icon

Tutti i modi per imparare

Leggi, ascolta, mettiti alla prova, chiedi all'AI o ripassa qualsiasi cosa tu abbia già visto. Ogni lezione si adatta a te.

Introduzione alle variabili
Audio

Una variabile è un contenitore con un nome che memorizza un valore a cui puoi fare riferimento più avanti nel programma.

In Python la crei scrivendo il nome, un segno di uguale e poi il valore che vuoi memorizzare.

Il valore può cambiare nel tempo: riassegnare il nome lo fa semplicemente puntare a un nuovo valore.

1xSarah

Ottieni un certificato

Ottieni un certificato per ogni corso che completi. Aggiungilo al tuo profilo LinkedIn e al curriculum per mostrare ai datori di lavoro le tue competenze di programmazione.

CoddyCertificato di completamento
Si certifica cheMario Rossiha completato con successo
python iconFondamenti di Python
Verificato
Datagen 2026
LinkedInAggiungi a LinkedIn

Perché imparare algoritmi e strutture dati in Dart su Coddy

  • Null safety, dove conta di più. Una lista concatenata o un albero sono fatti di riferimenti che possono mancare, e la null safety di Dart rende ognuno un Node? da controllare prima di seguirlo. Il crash da puntatore nullo che altri linguaggi scoprono in esecuzione, il compilatore di Dart lo segnala mentre stai ancora scrivendo la struttura.
  • Preparazione ai colloqui per sviluppatori Flutter. Dart è il linguaggio con cui ragioni in Flutter, e in molte aziende i colloqui mobile includono una prova sugli algoritmi. Anche l'albero dei widget di Flutter è un albero, quindi le visite che impari qui hanno la forma del framework che usi ogni giorno.
  • Quasi tutto il percorso in Dart. Ogni struttura dati, ordinamento, algoritmo sui grafi, sfida di ricorsione e pacchetto da colloquio è insegnato in Dart. Tre corsi sono insegnati altrove ed elencati dopo i passaggi con un link a ciascuno: la programmazione dinamica e la serie di colloqui in Python, in Python, e la manipolazione dei bit, in C++. La manipolazione dei bit si segue facilmente da Dart, che ha gli stessi &, |, ^, ~, << e >> del C++.
  • Valutato come in un colloquio. Ogni lezione termina con una sfida in Dart verificata da casi di test, e quando una fallisce, Bugsy legge il tuo codice e ti indirizza verso la correzione senza darti la risposta. Un certificato gratuito nella maggior parte dei corsi, ognuno verificabile al proprio URL.

Domande frequenti su algoritmi e strutture dati in Dart

Dart va bene per algoritmi e strutture dati?

Sì. È tipizzato e basato su classi, simile a Java o C# nella forma, quindi una classe Node<T> con un next nullable è esattamente ciò che sembra, e dart:collection copre più della maggior parte delle librerie standard. Due cose vanno sapute: l'SDK di base non ha una coda di priorità, e un letterale Map o Set è una LinkedHashMap o un LinkedHashSet, che ricorda l'ordine di inserimento: comodo per l'output, ma non è la stessa garanzia di una mappa ordinata.

Quali classi di Dart corrispondono a quali strutture dati?

List è un array dinamico e la tua pila; Map e Set sono tabelle hash, ordinate per inserimento per impostazione predefinita; dart:collection aggiunge Queue (una ListQueue, un buffer circolare, a meno che tu non scelga DoubleLinkedQueue), LinkedList per elementi che estendono LinkedListEntry, e SplayTreeMap e SplayTreeSet, alberi ordinati autoregolanti. Per un heap, il package:collection del team di Dart fornisce PriorityQueue. Trie e grafi li scrivi tu.

Dart ha una coda di priorità?

Non nell'SDK di base. dart:collection si ferma a code, liste concatenate e splay tree, e PriorityQueue si trova in package:collection, un pacchetto mantenuto dal team di Dart ma che aggiungi tu. Per questo un heap è una richiesta legittima in un colloquio su Dart, e nel secondo passaggio ne scrivi uno.

Cos'è uno splay tree, e quando usare SplayTreeMap?

Uno splay tree è un albero binario di ricerca autoregolante: ogni accesso sposta alla radice il nodo toccato, quindi le chiavi usate di recente si raggiungono di nuovo in fretta, e le operazioni costano O(log n) ammortizzato, non garantito su ogni singola chiamata. Usa SplayTreeMap quando ti servono le chiavi in ordine, la chiave più piccola o più grande, o la chiave più vicina da entrambi i lati di un valore, tramite firstKeyAfter e lastKeyBefore. L'albero AVL che costruisci nel secondo passaggio segue l'approccio opposto: si ribilancia a ogni modifica per mantenere l'altezza rigorosamente limitata.

Quali corsi di questo percorso non sono insegnati in Dart?

Tre: la programmazione dinamica e la serie di colloqui in Python, insegnate in Python, e la manipolazione dei bit, insegnata in C++. Sono elencati dopo i passaggi, ognuno con un link che lo apre nel suo linguaggio. Una memoizzazione in Dart è una List o una Map, e toRadixString(2) stampa un int in binario, il modo più rapido per verificare cosa contiene davvero una maschera.

Devo conoscere Dart prima di iniziare questo percorso?

Almeno classi, generics, liste, mappe e null safety. Se sono argomenti nuovi, il corso di Dart di Coddy ti porta prima a quel punto, gratis, e questo percorso riprende da dove finisce.

Altri percorsi di apprendimento

Gli stessi corsi, organizzati per un ruolo diverso. I progressi si mantengono: un corso completato in un percorso vale per ogni percorso che lo include.

Tutti i percorsi di apprendimento
Illustrazione dei linguaggi di programmazione di Coddy

Inizia gratis il percorso Algoritmi e strutture dati

Inizia a imparare