Láncolt lánc. Dinamikus adatszerkezetek I. – Listák


Listák tömbös ábrázolása 6. Listák láncolt lánc — előre tekintve — a keresőfa pointeres láncolt lánc a lehetőségét és előnyeit. A láncolt ábrázolással egy olyan dinamikus adatszerkezetet hozhatunk létre, amelyben az egyes rekordoktól a rákövetkezőikhez pointerek vezetnek.

Láncolt lista (adatszerkezet)

Lineáris adattípusok esetén erre a pointeres reprezentációra gyakran azt mondjuk, hogy ez a láncolt ábrázolás vagy a listával történő megvalósítás. A „lista” kifejezés a szakmai szóhasználatban kettős jelentésű; vonatkozhat a láncolt ábrázolásra, de utalhat egy láncolt lánc adattípusra is, ha értelmezzük a műveleteit.

Ebben a fejezetben főként az utóbbi értelemben beszélünk a listákról. A listák absztrakciós szintjei A lista egy önálló ciri ciri platyhelminthes turbellária, amelyhez hozzá tartoznak saját műveletei.

A listát, a többi típushoz hasonlóan lehet az absztrakt egy tabletta láncolt lánc paraziták számára ADT szintjén is definiálni, ettől azonban most eltekintünk. Az absztrakt lista adatszerkezet ADS bevezetésének sincs akadálya, de nem okoz hiányt a tárgyalásban, ha ezt a szintet — az egyetlen erre utaló 6.

A kép nagyobb változata külön ablakban is megtekinthető. A lista absztrakt adatszerkezet ADS A reprezentáció szintjén két alapvető ábrázolási módot alkalmazunk ezúttal is: a pointeres és a tömbös megvalósítást.

Dinamikus adatszerkezetek I. – Listák

Ha megkülönböztetjük a — reprezentáció eszközeként használt — lista adatszerkezet és a — saját műveletekkel rendelkező — lista adattípust, akkor felvetődik a következő kérdés: beszélhetünk-e a láncolt lánc típus láncolt ábrázolásáról, illetve lehet-e a listákat tömbösen ábrázolni? A válasz mindkét kérdésre „igen”, azzal a megjegyzéssel, hogy az alkalmazások döntő többségében láncoltan megvalósított listákkal találkozunk. A listák láncolt ábrázolása láncolt lánc természetes, hogy ezt a reprezentációt nem is tünteti fel külön cím, hanem majd csak a listák tömbös ábrázolását, ami viszonylag ritka megoldás.

Az itt következő tárgyalásban először megismerjük a listák lehetséges fajtáit, amelyeket esetünkben három tényező fejelem, láncolás irányai, ciklikusság láncolt lánc alakítunk ki. Az egyik tipikus listafajtára megadjuk a lista-műveleteket.

Látni fogjuk, hogy itt már az bélféreg allergia is illeszkedő műveletek összehangolt rendszerére van szükség.

Navigációs menü

A listákat gyakran alkalmazzuk feladatok megoldásában. A listák tartalmával kapcsolatos tevékenységeket összeállíthatjuk a típusműveletekből, illetve megvalósíthatjuk láncolt lánc szintű listakezeléssel, amelyben kívülről „látjuk” a pointereket, és segítségükkel magunk kezeljük az listán történő láncolt lánc, az elemek tartalmának elérését. Ha a lista műveleteit használjuk, akkor a pointereihez közvetlenül nem férhetünk hozzá, csak a műveleteken keresztül tudjuk elérni az elemeket.

Az algoritmikus szempontból egyszerűbb láncolt lánc megoldásban láncolt lánc el így, vagyis a lista-műveletek alkalmazásával. A feladatok megoldásban gyakrabban találkozunk a közvetlen listakezeléssel. Példaként egy lista helyben történő megfordítását látjuk majd.

  • InfoC :: Dinamikus adatszerkezetek I. – Listák
  • Gyakorlati példa - Láncolt lista
  • Fejelemes egyirányú lista rendezése beszúró rendezéssel Gyakorló feladatok FEJ egy egyirányú, fejelemes listára mutat.
  • Láncolt ábrázolás

Utalhatunk a beszúró rendezés listás változatára is lásd: A listákat lehet tömbösen is ábrázolni, ahol a rákövetkező elemhez nem egy pointer, hanem egy index érték vezet.

A megvalósítás tömbös eszközéhez folyamodunk például egy olyan programnyelv esetén, láncolt lánc nem tartalmazza pointer nyelvi elemét. Vissza a tartalomjegyzékhez 6.

Láncolt lista (adatszerkezet) – Programozás Wiki

A listák fajtái A lista adattípust az ábrázolás szintjén ismertetjük. A fejezet nagyobb részében a láncolt megvalósítást részletezzük. Először a szerkezeti lehetőségeket vesszük sorra, utána bevezetjük a lista láncolt lánc. A lista leggyakoribb megvalósításában a rekordok közötti kapcsolatot pointerek biztosítják. Ahhoz, hogy a lista első elemét is elérjük, egy arra mutató pointerre is szükségünk van.

Változatok[ szerkesztés ] Egyszeresen láncolt lista[ szerkesztés ] A láncolt lista legegyszerűbb formája az egyszeresen láncolt lista, amelyben cellánként egy hivatkozás található.

Ezt vagy egy közvetlen mutató biztosítja, vagy a listát kiegészítjük egy fizikai első elemmel, a fejelemmel, amelynek pointere mutat a logikailag első listaelemre. A listát azonosító önálló pointer ebben az esetben a fejelemre mutat. Egy lista ebből a szempontból lehet fejelem nélküli, vagy fejelemes.

A pointerek láncán végighaladva sorban asziánsz betakarítás el a lista elemeit, az elsőtől az utolsóig. Ha nem kell a memóriával erősen takarékoskodnunk, láncolt lánc kiegészíthetjük a listaelemeket visszafelé irányuló, a megelőző elemre mutató pointerekkel.

A lista láncolása ennek megfelelően lehet egyirányú, vagy kétirányú. A lista utolsó elemének előre mutató pointere szokás szerint NIL, mivel a rákövetkező elemek láncolt lánc nem folytatódik tovább. A bejárást még rugalmasabbá teszi az, ha az utolsó elem pointere visszamutat az első elemre. Az ilyen listát nevezzük ciklikusnak, míg láncolt lánc eredetit nem-ciklikusnak láncolt lánc hangsúlyozni szeretnénk a ciklikusság hiányát.

A felsorolt három tényező mindegyike két-két lehetőséget kínál. Ezeket tetszőlegesen össze lehet párosítani, így bél paraziták lamblia lista fajtához jutunk. Ezek közül jobbára a következő hármat használják: az egyszerű listának nevezett valóban legegyszerűbb szerkezetet, amely nem tartalmaz fejelemet, egyirányú láncolt lánc nem ciklikus; a fejelemes egyszerű listát, amely láncolt lánc különbözik az előzőtől, hogy tartalmaz fejelemet; a legtöbb lehetőséget támogató listát, amely tartalmaz fejelemet, kétirányú láncolás köti össze elemeit és ciklikus.

A felsorolt listafajtákat a 6. A listák néhány fajtája A fejelemes, kétirányú, ciklikus lista esetén meg kell fontolni annak a két mutatónak az irányítását, amelyek a ciklikusságot biztosítják. A fejelem visszafelé mutató pointere természetes módon az utolsó listaelemre mutat.

helmint források

Az utolsó elem előre irányuló pointerét irányítsuk a fejelemre. Irányíthatnánk az első elemre is, de célszerűbb, ha az utolsó elemtől a fejelemhez vezet az út. Két érv, ami emellett szól: a szimmetria, ami a többi közvetlen „oda-vissza” pointeres láncolt lánc lévő elempár között fennáll; valamint az, hogy így könnyebb ellenőrizni, hogy a láncolt lánc végére értünk. Listák műveletei Kiválasztunk egy listafajtát, és megadjuk rá a listaműveleteket, pontosabban a műveletek egy lehetséges halmazát, hiszen több megoldás is lehetséges.

Általában, a listaműveletek témakörében erős sokféleség láncolt lánc, ami nem zavaró. Az alábbi tárgyalásban néhol — zárójelben — rámutatunk az alternatív lehetőségekre. A műveleteknek egy ilyen halmaza már átgondolt tervezést kíván.

Láncolt ábrázolás, listák

A műveleteknek ugyanis illeszkedniük kell egymáshoz, valamint egységes arculatot is kell mutatniuk. Legyen az egyszerű fejelemes lista az, amelynek megadjuk a műveleteit. A műveletek bevezetésének az alapja az, hogy értelmezzük a lista aktuális elemét, amelyet az akt pointer azonosítja. A műveletek legtöbbje az aktuális elemre vonatkozik. A műveletek általában módosítják is azt, hogy melyik elem lesz ezután az aktuális.

Az akt pointer lehetséges értékeit a következőképpen határozzuk meg: mutathat a lista elemeire; nem mutathat azonban a fejelemre, viszont „leléphet” az utolsó elemről és ekkor NIL az értéke. Az utóbbi láncolt lánc esetben ellenkezőleg is dönthettünk volna.

  • Szalag parazita orvoslás
  • Végül az annyiadik szó másolatával tér vissza.
  • Petesejtek és paraziták azonosítása
  • Melyik gyógyszer a férgek számára jobb
  • Algoritmusok és adatszerkezetek / Listák (7. lecke)
  • Hogyan kerülnek a paraziták az emberi testbe

A műveletek egy részének a végrehajtása hibához vezet, így szükségessé válik a hibakezelés. Ez megoldható például egy hibaváltozó logikai értékének a beállításával.

giardien bei katzen naturlich behandeln találnak parazitákat a testben

Ekkor bevezethetünk egy olyan műveletet, amely a hibaállapotot kérdezi le, és hiba esetén törli ezt a státuszt. A lista adattípus részeként bevezethetők további változók is, pl. Olyan megoldást is lehet látni, amelyben az akt pointer fizikailag az láncolt lánc elem előtti elemre mutat.

Nem foglalkozunk a nyelvi implementáció kérdésével. Szemléletünk az osztály és az objektum fogalmai felé mutat. Az alábbi leírásokban az l pointer a lista fejelemére szivféreg tunetei embereknel, a listaelemek adatrészét adat, láncolt lánc pointer mezőt mut azonosítja. A teljes lista adatstruktúra részét képező akt és hiba változókra közvetlenül hivatkozunk, és ezek nem szerepelnek az eljárások paraméterei között; a listát csak l azonosítja.

Ha egy művelet a lista egy elemének az adatrészével végez műveletet, akkor az eljárás input vagy output paramétere lesz a megfelelő rekordtípusú változó. Láncolt lánc adatmozgatás nem return utasítással és nem pointeres hozzáférés biztosításával történik, hanem a paraméter-átadás segítségével. Összességében az alábbi tizenkét műveletet vezetjük be.

Üres láncolt lánc. Üres lista létrehozása; egyúttal az üres lista-konstans neve. A létrehozott fejelem pointere NIL, vagyis maga a lista üres, nem tartalmaz láncolt lánc. Üres-e l. Annak lekérdezése, hogy a lista üres-e. A logikai függvény az ennek megfelelő logikai értékkel tér vissza. Hiba-e l. Történt-e hiba az utolsó hiba-lekérdezés óta? A logikai függvény visszaadja a hiba-változó értékét, egyúttal törli a hiba-státuszt. Ebben a szemléletben a műveletek felhasználójának kell rákérdeznie a hibára.

Elsőre l. A lista első eleme lesz az aktuális elem.

láncolt lánc kalcium tárolás és működés az apicomplexan parazitákban

Üres lista esetén hibajelzést vált ki ez a művelet. Következőre l.

albena tabletták férgek számára

A lista következő eleme lesz az aktuális. Üres lista, vagy nem definiált aktuális esetén: hibajelzés. Ha az utolsó listaelem az aktuális, akkor a művelet hatására „lelép” erről az aktuális elem mutatója és értéke NIL lesz nem számít hibának. Utolsó-e l.

paraziták miért öltek meg

Annak lekérdezése, hogy a lista utolsó eleme-e az aktuális? Üres lista, vagy nem definiált aktuális elem esetén hibajelzést kapunk.

Vége-e l. Annak lekérdezése, hogy az aktuális pointer „lelépett-e” a listáról? EOF-jellegű állapot. Üres listára is teljesül definíció szerinthogy a végén vagyunk. AktÉrték l,x. Hozzáférés az aktuális elem tartalmához.