


Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
- Introduzione: Vettore e array - Linked List Singola - Linked List Doppia - Iteratori - Stack ADT - Queue ADT - Albero - Albero binario
Tipologia: Sintesi del corso
1 / 4
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



Che cos’è un array? È una collezione in sequenza di variabili dello stesso tipo, ognuna di queste variabili (o celle) ha un indice, che si riferisce unicamente al valore memorizzato in quella cella e ogni valore memorizzato si chiama elemento di un array. La capacità di un array determina il numero massimo di elementi memorizzabili nell’array, di conseguenza la numerazione degli array avviene sequenzialmente (0, 1, 2, … fino a array.length- 1 ), così possiamo visualizzare il valore di una cella con indice k con la sintassi “ array[k] ” Inizializzare un array: In Java si usa tradizionalmente l’operatore new e la sintassi risulta new tipoVariabile[length].
Che cos’è una linked list singola? È una struttura dati astratta formata da una sequenza di nodi che inizia con un puntatore head e ciascuno di questi nodi memorizza l’elemento e il puntatore del prossimo nodo. Inserimento in testa: Alloca un nuovo nodo ; inserisce un nuovo elemento; essendo che il nuovo nodo punta alla vecchia head , aggiorna la head per puntare al nuovo nodo. Inserimento in coda: Alloca un nuovo nodo ; inserisce un nuovo elemento; nuovo nodo che punta a null ; essendo che il nodo precedente punta al nuovo nodo viene aggiornata la tail per puntare a un nuovo nodo. Rimozione in testa: Aggiorna la head per puntare al nodo successivo nella lista; consente al garbage collector di deallocare il precedente nodo head. Rimozione in coda: Non è efficiente e non esiste un modo a tempo costante per aggiornare la tail affinché punti al nodo precedente.
A differenza della linked list singola può essere attraversata sia in avanti che all’indietro, qui ciascun nodo memorizza l’elemento, il puntatore al nodo precedente e il puntatore al nodo prossimo ; i nodi speciali sono due: header e trailer. Inserimento: Inserisce un nuovo nodo tra un nodo p ed il suo successore. Rimozione: Rimuove un nodo p dalla lista.
Che cos’è un iteratore? È un modello di progettazione software che rappresenta la scansione di una sequenza di elementi, eseguito uno alla volta. Java definisce un’interfaccia parametrizzata, Iterable , con l’unico metodo Iterator() che restituisce un iteratore con gli elementi presenti nella collazione. Ciascuna chiamata ad iterator() restituisce una nuova istanza Iterator , consentendo più attraversamenti simultanei.
È una struttura dati che contiene una sequenza di oggetti arbitrari; per l’inserimento e per l’eliminazione viene seguita una logica LIFO (Last-In First-Out). Operazioni:
È un albero con la caratteristica che ciascun nodo interno può avere al massimo due figli, e i figli di un nodo sono una coppia ordinata e vengono chiamati figlio sinistro e figlio destro. Definizione: un albero è costituito da un solo nodo, o da un albero la cui radice ha una coppia ordinata di figli che sono a loro volta alberi binari. Applicazioni: Espressioni aritmetiche, processi di decisione, ricerca. Alberi di decisione: L’albero binario è spesso associato a problemi decisionali, dove i nodi interni sono le domande (con risposta si/no) e i nodi esterni sono le decisioni. L’albero binario ADT estendo l’albero ADT ereditandone quindi tutti i metodi, ma se ne aggiungono altri come left(p) , right(p) e sibling(p) , tali metodi restituiscono null se rispettivamente manca il nodo sinistro, destro o di siblling (fratello) di p. Attraversamento in inordine: un nodo viene visitato dopo il suo sottoalbero sinistro e prima del suo sottoalbero destro. Albero binario basato su linked list: un nodo è reso da un oggetto che memorizza elemento, nodo parente, nodo figlio sinistro e nodo figlio destro; gli oggetti nodo implementano la posizione ADT.