Estratto del documento

Catena (linkedlist)

Catena: è un insieme ordinato di nodi.

Vantaggi di una catena

  • Non esiste il problema di "catena piena", quindi non è mai necessario "ridimensionarla".
  • Non c'è spazio di memoria sprecato (come negli array "riempiti solo in parte").
  • Un nodo occupa però più spazio di una cella di array, almeno il doppio (contiene due riferimenti anziché uno).
public class ListNode {
    // costruttori
    public ListNode() {
        element = null;
        next = null;
    }
    public ListNode(Object e, ListNode n) {
        element = e;
        next = n;
    }

    // metodi pubblici
    public Object getElement() {
        return element;
    }
    public ListNode getNext() {
        return next;
    }
    public void setElement(Object e) {
        element = e;
    }
    public void setNext(ListNode n) {
        next = n;
    }

    // campi di esemplare
    private Object element;
    private ListNode next;
}

Classe LinkedList

public class LinkedList implements Container {
    // campi di esemplare
    private ListNode head, tail;

    // costruttore
    public LinkedList() {
        head = tail = new ListNode();
    }

    // metodi pubblici di Container
    public void size() {
        ListNode temp = head.getNext();
        int size = 0;
        while (temp != null) {
            size++;
            temp = temp.getNext();
        }
        return size;
    }
    
    public boolean isEmpty() {
        return (head == tail);
    }
    
    public Object getFirst() { // operazione O(1)
        if (isEmpty())
            throw new EmptyLinkedListException();
        return head.getNext().getElement();
    }
    
    public Object getLast() { // operazione O(1)
        if (isEmpty())
            throw new EmptyLinkedListException();
        return tail.getElement();
    }

    // vanno scritti i metodi addFirst, addLast, removeFirst, removeLast
}

// Eccezione per lista vuota
class EmptyLinkedListException extends RuntimeException { }

Per accedere in sequenza a tutti i nodi della catena si parte dal riferimento head e si seguono i riferimenti contenuti nel campo next di ciascun nodo. Non è possibile scorrere la lista in senso inverso e la scansione termina quando si trova il nodo con il valore null nel campo next.

Anteprima
Vedrai una selezione di 1 pagina su 1
Informatica I - ADT la struttura dati catena Pag. 1
1 su 1
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher enricopava di informazioni apprese con la frequenza delle lezioni di Informatica 1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Avanzini Federico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community