Hvordan å oppdage en sirkularitet i en lenket liste i Java

Programmeringsspråket Java inneholder mange innebygde datastrukturer som hash tabeller og lenket liste. Imidlertid kan det være nyttig å implementere din egen bestemt type datastruktur basert på dine behov. På grunn av dette vil du ofte ønsker å lage dine egne metoder for å definere funksjonaliteten til datastrukturen. Mens bygge en lenket liste du kan ønske å avgjøre hvorvidt listen er sirkulær. En sirkulær liste er en i hvilken enden av listen refererer tilbake til begynnelsen av listen. Kontroll for dette er så enkelt som å navigere i listen, og avgjøre hvorvidt du gå tilbake til begynnelsen av listen.

Bruksanvisning

1 Lag en funksjon for å se etter liste sirkularitet. Denne funksjonen vil returnere "Riktig" hvis listen er sirkulær, og "false" ellers. Definer denne funksjonen i listen klassen:

klasse LL {

public boolean isCircular () {
}
}

2 Lag en løkke i funksjonen for å traversere listen. Sløyfen skal begynne på hodet av funksjon, og gå gjennom hver node i hele listen, representert ved "Node" datatype, inntil nå "null" (slutten av listen):

public boolean isCircular () {

Node Strøm = head.next; // Begynner på noden følgende hovedknutepunktet

while (strøm! = null) {
}
}

3 Bruk sløyfe for å sjekke hver node i listen. Hvis den aktuelle noden er hovedknutepunktet, som betyr at løkken har krysset hele listen og endte opp tilbake i begynnelsen, noe som betyr at listen er sirkulær. Hvis sløyfen treffer en "null" verdi listen er ikke sirkulært:

public boolean isCircular () {

Node Strøm = head.next; // Begynner på noden følgende hovedknutepunktet

while (strøm! = null) {
if (nåværende == hode) {
return true;
}
return false;
}
}

Hint

  • Dette eksempelet er ikke ment å være en perfekt gjennomføring av et sirkulært lenket liste eller hvordan å sjekke det, men heller som en blå ut.