logo

Hopp over liste i Datastruktur

Hva er en hoppliste?

En hoppliste er en sannsynlig datastruktur. Hopp over listen brukes til å lagre en sortert liste over elementer eller data med en koblet liste. Det lar prosessen med elementene eller dataene se effektivt. I ett enkelt trinn hopper den over flere elementer av hele listen, og det er derfor den er kjent som en hoppliste.

Hopp over listen er en utvidet versjon av den koblede listen. Den lar brukeren søke, fjerne og sette inn elementet veldig raskt. Den består av en basisliste som inkluderer et sett med elementer som opprettholder koblingshierarkiet til de påfølgende elementene.

Hopp over listestruktur

Den er bygget i to lag: Det nederste laget og det øverste laget.

Det laveste laget av hopplisten er en vanlig sortert lenket liste, og de øverste lagene i hopplisten er som en 'ekspresslinje' der elementene hoppes over.

Kompleksitetstabell for Hopp over listen

Ja Nei Kompleksitet Gjennomsnittlig tilfelle I verste fall
1. Tilgang kompleksitet O(logn) På)
2. Søkekompleksitet O(logn) På)
3. Slett kompleksitet O(logn) På)
4. Sett inn kompleksitet O(logn) På)
5. Romkompleksitet - O(nlogn)

Arbeidet med hopplisten

La oss ta et eksempel for å forstå hvordan hoppelisten fungerer. I dette eksemplet har vi 14 noder, slik at disse nodene er delt inn i to lag, som vist i diagrammet.

Det nederste laget er en felles linje som kobler sammen alle noder, og det øverste laget er en ekspresslinje som bare kobler sammen hovednodene, som du kan se i diagrammet.

Anta at du vil finne 47 i dette eksemplet. Du vil starte søket fra den første noden på ekspresslinjen og fortsette å kjøre på ekspresslinjen til du finner en node som er lik 47 eller mer enn 47.

Du kan se i eksemplet at 47 ikke eksisterer i ekspresslinjen, så du søker etter en node på mindre enn 47, som er 40. Nå går du til normallinjen ved hjelp av 40, og søker på 47, som vist i diagrammet.

Hopp over liste i Datastruktur

Merk: Når du finner en node som dette på 'ekspresslinjen', går du fra denne noden til en 'normal bane' ved hjelp av en peker, og når du søker etter noden på normallinjen.

Hopp over liste Grunnleggende operasjoner

Det er følgende typer operasjoner i hopplisten.

    Innsettingsoperasjon:Den brukes til å legge til en ny node til et bestemt sted i en bestemt situasjon.Sletteoperasjon:Den brukes til å slette en node i en bestemt situasjon.Søkeoperasjon:Søkeoperasjonen brukes til å søke etter en bestemt node i en hoppliste.

Algoritme for innsettingsoperasjonen

 Insertion (L, Key) local update [0...Max_Level + 1] a = L → header for i = L → level down to 0 do. while a → forward[i] → key forward[i] update[i] = a a = a → forward[0] lvl = random_Level() if lvl > L → level then for i = L → level + 1 to lvl do update[i] = L → header L → level = lvl a = makeNode(lvl, Key, value) for i = 0 to level do a → forward[i] = update[i] → forward[i] update[i] → forward[i] = a 

Algoritme for slettingsoperasjon

 Deletion (L, Key) local update [0... Max_Level + 1] a = L → header for i = L → level down to 0 do. while a → forward[i] → key forward[i] update[i] = a a = a → forward[0] if a → key = Key then for i = 0 to L → level do if update[i] → forward[i] ? a then break update[i] → forward[i] = a → forward[i] free(a) while L → level > 0 and L → header → forward[L → level] = NIL do L → level = L → level - 1 

Algoritme for søkeoperasjon

 Searching (L, SKey) a = L → header loop invariant: a → key level down to 0 do. while a → forward[i] → key forward[i] a = a → forward[0] if a → key = SKey then return a → value else return failure 

Eksempel 1: Lag en hoppliste, vi ønsker å sette inn disse følgende tastene i den tomme hopplisten.

  1. 6 med nivå 1.
  2. 29 med nivå 1.
  3. 22 med nivå 4.
  4. 9 med nivå 3.
  5. 17 med nivå 1.
  6. 4 med nivå 2.

År:

Trinn 1: Sett inn 6 med nivå 1

Hopp over liste i Datastruktur

Steg 2: Sett inn 29 med nivå 1

Hopp over liste i Datastruktur

Trinn 3: Sett inn 22 med nivå 4

Hopp over liste i Datastruktur

Trinn 4: Sett inn 9 med nivå 3

Hopp over liste i Datastruktur

Trinn 5: Sett inn 17 med nivå 1

Hopp over liste i Datastruktur

Trinn 6: Sett inn 4 med nivå 2

Hopp over liste i Datastruktur

Eksempel 2: Tenk på dette eksemplet hvor vi vil søke etter nøkkel 17.

Hopp over liste i Datastruktur

År:

Hopp over liste i Datastruktur

Fordeler med Skip-listen

  1. Hvis du vil sette inn en ny node i hopplisten, vil den sette inn noden veldig raskt fordi det ikke er noen rotasjoner i hopplisten.
  2. Hopp over listen er enkel å implementere sammenlignet med hashtabellen og det binære søketreet.
  3. Det er veldig enkelt å finne en node i listen fordi den lagrer nodene i sortert form.
  4. Algoritmen for hoppe over listen kan endres veldig enkelt i en mer spesifikk struktur, for eksempel indekserbare hoppelister, trær eller prioriterte køer.
  5. Hopplisten er en robust og pålitelig liste.

Ulemper med Hopp over listen

  1. Det krever mer minne enn det balanserte treet.
  2. Omvendt søk er ikke tillatt.
  3. Hopplisten søker i noden mye langsommere enn den koblede listen.

Søknader fra Hopp over listen

  1. Den brukes i distribuerte applikasjoner, og den representerer pekerne og systemet i de distribuerte applikasjonene.
  2. Den brukes til å implementere en dynamisk elastisk samtidig kø med lav låsekonflikt.
  3. Den brukes også med malklassen QMap.
  4. Indekseringen av hoppelisten brukes til å kjøre medianproblemer.
  5. Hopp over listen brukes for delta-kodingsposteringen i Lucene-søket.