Come rilevare una circolarità in una lista collegata in Java

September 7

Il linguaggio di programmazione Java contiene molte strutture di dati built-in, come tabelle hash e lista collegata. Tuttavia, può risultare utile per attuare il proprio tipo specifico di struttura dati in base alle proprie esigenze. A causa di questo spesso si desidera creare i propri metodi per definire la funzionalità della struttura di dati. Mentre la costruzione di una lista collegata si potrebbe desiderare di determinare se la lista è circolare. Una lista circolare è quella in cui l'estremità della lista rinvia all'inizio della lista. Controllo per questo è semplice come navigare l'elenco e determinare se o non si ritorna all'inizio della lista.

istruzione

1 Creare una funzione per verificare la lista circolarità. Questa funzione restituisce "True" se la lista è circolare, e "False" in caso contrario. Definire questa funzione all'interno della classe lista:

class LL {

isCircular public boolean () {
}
}

2 Creare un ciclo nella funzione per attraversare la lista. Il ciclo inizierà a capo della funzione, e passare attraverso ogni nodo in tutta la lista, rappresentato dal tipo di dati "nodo", fino a raggiungere "null" (la fine della lista):

isCircular public boolean () {

corrente Nodo = head.next; // Inizia al nodo successivo al nodo principale

mentre (corrente! = null) {
}
}

3 Utilizzare il ciclo per controllare ogni nodo della lista. Se il nodo corrente è il nodo principale, ciò significa che il ciclo ha attraversato l'intero elenco ed avvolto su indietro all'inizio, il che significa che la lista è circolare. Se il ciclo colpisce un valore "null" l'elenco non è circolare:

isCircular public boolean () {

corrente Nodo = head.next; // Inizia al nodo successivo al nodo principale

mentre (corrente! = null) {
if (testa == corrente) {
return true;
}
return false;
}
}

Consigli e avvertenze

  • Questo esempio non è inteso per essere un perfetto attuazione di un elenco collegato circolare o come controllare, ma piuttosto come una stampa blu.