Struktúra és adatfeldolgozó algoritmusok (p

Funkció Üres: Boolean;

Ha I = 0, akkor üres: = True Else üres: = False;

Ha a művelet a köteg mintát először meg kell végrehajtani, hogy a köteg vákuum. Ha üres, az üres True. Ha üres visszatér False, ami azt jelenti, hogy a verem nem üres, és ki is kiválaszthatja terméket.

Eljárás StackTop (var I: integer; S: Stack);

2.4.2 várólista

A fogalom a sorban mindenki tudja a mindennapi életben. Az elemek a sorban általában megrendelések egy adott szolgáltatás.

A programozás, van egy adatszerkezet, amely az úgynevezett sorban. Ez az adat struktúrát alkalmazunk, például modellezésére igazi sorok határozzák meg azok jellemzőit egy adott törvény beérkező rendelések és fegyelmezni a fenntartásukat. Lényegében, ez egy félig statikus struktúráját az összes - a az idő múlásával és a sor hossza, és az összetétele változhat.

On ris.privedena viszont tartalmaz négy elem - az A, B, C és D. Az A elem található elején a sorban, és az elem a D - a végén. Csak elemei a sorban el lehet távolítani, hogy a van, először helyezzük az első elem el van távolítva. Emiatt az összes gyakran nevezik listáját szervezett elv szerint „első otthont az első eltávolított”, szemben az elvet a stack szervezet - „az utolsó helyen az első eltávolítják.”

Fegyelmi szolgáltatás, ahol megrendeléseket kapott az első helyen, az első kiválasztott szolgáltatás (és eltávolítani a sorból), az úgynevezett FIFO (First In First Out - az első, first out). A sort nyitott mindkét oldalon.

Így a Az egyik komponens eltávolítása származó sorban, és a rekord - a végén. Ebben az esetben be két mutató - az egyik az első a sorban, a második - a végére.

A tényleges hely jön létre a számítógép memóriájában formájában egydimenziós tömb véges számú elem, ebben az esetben meg kell adni a típusát sorokat és szüksége van egy változót a munka sorban.

Fizikailag viszont foglal egy folyamatos területen memória elemek és követik egymást, mint egy szekvenciális listában.

Végrehajtott műveletek a sorból:

három primitív művelet van definiálva a sorban. Működés betét (q, x) helyezi az elem x a sorban q. Működés eltávolítás (q) eltávolít egy elemet a sorból q és hozzárendeli a x változó. A harmadik művelet üres (q), a visszatérési érték true vagy false attól függően, hogy a várólista üres-e vagy sem. Ezen felül. Tekintettel arra a tényre, hogy a félig statikus minden végre egy egydimenziós tömböt, meg kell, hogy kövesse a lehetőségét túlcsordulás. Ezzel a célból a opnratsiya teljes (q).

Működés betét lehet mindig végre, mert az elemek száma, amelyek egy részét tartalmazzák, nincs korlátozva. Az eltávolítás művelet azonban csak akkor alkalmazható, egy nem üres sorban, mivel lehetetlen eltávolítani egy elemet a sorból nem tartalmaz olyan elemeket. Az eredmény, hogy megpróbálja eltávolítani egy elemet egy üres sort a megjelenése kivételes helyzet alulcsordulását. Működés üres, természetesen mindig megvalósítható.

Egy példa a végrehajtás a sorban formájában egydimenziós tömb Pascal:

Queue = Array [1..MaxQ] E;

Távolítsuk el az elemek az A és B a sorból.

Sajnos, ilyen ábrázolása a sorban tapasztalhatnak abszurd helyzet, amikor a sor üres, de az új sejt nem tudja befogadni az ott (gondoljunk sorozata eltávolítása és behelyezése műveleteket, így egy ilyen helyzetben). Egyértelmű, hogy a sorban végrehajtás egy mezőhöz elfogadhatatlan.

Az egyik megoldás, hogy a probléma lehet eltávolítani módosítása műveletet úgy, hogy eltávolítja a következő elem egész sort eltoljuk, hogy a tetején a tömb. Működés eltávolítás (q) ezután alábbiak szerint valósítható meg.

Az F változó már nem szükséges, mert az első eleme a tömb mindig az elején a sorban. Egy üres sort képviselő a sorban, amely az R érték egyenlő nullával.

Azonban ez a módszer nagyon terméketlen. Minden ud-Lenie igényel mozgó összes többi elem a sorban. Ha a sor tartalmaz 500 vagy 1000 példány, akkor nyilvánvaló, hogy ez egy nagyon hatékony módja. Továbbá elem elhagyása a sorból logikai művelet magában foglalja a manipuláció csak az egyik eleme, azaz a. E. Ugyanakkor található, amely az elején a sorban. Az az ezen intézkedés végrehajtásának tükröznie kell ezt a tényt, anélkül, különféle kiegészítő tevékenységek.

Egy másik módszer úgy egy tömb, amely tartalmaz egy sorban formájában egy zárt gyűrű helyett lineáris szekvenciát, amelynek kezdete és vége. Ez azt jelenti, hogy az első elem a sorban közvetlenül követi az utolsó. Ez azt jelenti, hogy még ha az utolsó elem nem áll rendelkezésre, az új értéket lehet helyezni közvetlenül mögötte a helyszínen az első elem, amikor az első elem üres.

Szervezése körvezeték.

Vegyünk egy példát. Tegyük fel, hogy sorban három elemet tartalmaz - a 3-as, 4 és 5, egy öt-elem tömb. Ez az eset a ábrán látható. 2.17. Bár a tömb üres, és az utolsó sor nem áll rendelkezésre.

Most, ha kísérlet történik, hogy hozzanak létre egy eleme G, akkor rögzítésre kerül az első helyen, a tömb ábrán látható. 2.17. Az első elem a várakozási sor Q (3), majd a Q elemei (4) Q (5) és Q (l).

Sajnos, nehéz meghatározni, hogy mikor a sor üres, amikor ilyen képviselet. Az a feltétel, R

Az egyik módja annak, hogy megoldja ezt a problémát, a bevezetése egy megállapodást, amelynek értelmében az értéket Fest mezőindex közvetlenül megelőző első eleme a sorban. Nem az index az első elem. Ebben az esetben, mivel az R tartalmazza az utolsó szakaszában az index, a feltétel F = R azt jelenti, hogy a várakozási sor üres.

Vegye figyelembe, hogy mielőtt a munkasor, F és R a sor utolsó tömb index értéke helyett 0 és 1, hiszen ebben az ábrázolás az utolsó sor elem tömb azonnali, de megelőzi az első elemet. Mivel R = F, akkor a sorban kezdetben üres.

Alap működését a kör alakú sorban:

1. betételem q x helyén.

2. eltávolítása eleme x fordulat.

3. Ellenőrizze az üres sorban.

19. A szervezett gyűrű az egész?

20. Mi jellemzi iker fedélzeten?

Eddig úgy csak a statikus szoftver tárgyakat. Azonban az a programozás csak statikus objektumok problémákat okozhat, különösen, ami a szerzés egy hatékony számítógépes program. Az a tény, hogy néha nem tudjuk előre nem csak a méret a program összértékének tárgy, hanem arról, hogy a tárgy létezik, vagy nem. Ez a fajta szoftver objektumok fordulnak elő már a program végrehajtása során, illetve az értékeket, amelyek mérete határozza program végrehajtása során, az úgynevezett dinamikus objektumok.

Dinamikus adatszerkezetek két jellemzői:

1) Pre-meghatározatlan számú elemek a szerkezet.

2) elemei dinamikus struktúrák merev, egyenes rendelés. Ezek lehetnek elszórtan a memóriából.

Kapcsolni elemeit közötti dinamikus szerkezetek az elemek mellett az információs mezőket tartalmaz egy mezőt, pointereket (ábra. 3.1) (ligamentum szerkezet más elemeivel).

3.1 láncolt listák

A leggyakoribb dinamikus struktúrák kapcsolt listák. Ami a logikai ábrázolás megkülönbözteti a lineáris és nem lineáris listákat.

Lineáris listák egyszerűen csatlakoztatható és kettős kapcsolt listák. A nem lineáris - szaporodnak.

listatétel, általában olyan terület felvétel és egy vagy több mutató.

3.1.1 egyszeres kapcsolt listák

láncolt lista elem két mezőt tartalmaz (3.2 ábra.): egy információs mező (INFO) mezőt, és egy mutató (PTR).

Hozzáférés a tételt a listában csak a kezdetektől, vagyis a visszacsatolás nem szerepel.

3.1.2 Ring egyszeresen láncolt lista

Ring egyszeresen láncolt lista kapjuk a hagyományos láncolt listában az utolsó elem pointer hozzárendelési listából indul mutató lista (3.3 ábra).

Alapvető műveletek végre a láncolt lista

1) Helyezze elején a láncolt lista.

Egészül ki, hogy az elején egy láncolt lista elem információs mező D. Ehhez az szükséges, hogy létrehoz egy üres elem (P = GetNode). Információs mező A cella értéket rendelni D (INFO (P) = D), egy mutatót érték ennek az elemnek rendelni egy mutatót a lista elején (PTR (P) = LST), az értéke a start mutató lista rendelni az érték a mutató P (LST = P).

Végrehajtása Pascal:

Helyezze be a felső

2) eltávolítása a start elem láncolt lista.

Meg kell szüntetni az első tétel a listán, de ne felejtsük szereplő információkat az Info területén ezt az elemet. Ehhez bevezetjük a mutatót P, ami azt jelzi, cserélhető elem (P = LST). Tartalmazza a változók X értéke az információ mezőelemet eltávolítani Info (X = Info (P)). A mutató értéke a lista elején rendelni az érték a mutatót követő cserélhető elem (LST = Ptr (P)). Távolítsuk el tárgyakat (FreeNode (P)).

Végrehajtása Pascal:

Eltávolítása az elejétől

3.1.3 Dual-lista

Használata egyirányú listák okozhat némi nehézséget megoldásában számos problémát. A tény az, hogy tudja mozgatni az egyirányú lista csak egy irányban, a cím a linket az utolsó láncszem a listán. Közben gyakran szükség semmilyen feldolgozó elem megelőző eleme egy előre meghatározott tulajdonság. Azonban miután az elemet az ingatlan egy láncolt lista, nem tudunk betelni a kényelmes és gyors hozzáférést biztosít a korábbi elem - e cél elérése érdekében meg kell bonyolítani az algoritmus, ami kényelmetlen és kivitelezhetetlen.

Kétszeresen láncolt lista jellemzi az a tény, hogy minden egyes elem két mutató. Az egyik azt jelzi, az előző elem (fordított), a másik pont, hogy a következő elem (egyenes vonal) (ábra. 3.4).

Tény, kétszeresen láncolt lista egy láncolt lista két azonos elemeket rögzítik a ellenkező sorrendben.

3.1.4 Ring kétszeresen láncolt lista

Műveletek kettős kapcsolt listák:

- cozdanie cikkek listáját;

- Megkeresi egy elemet a listán;

- illesztve egy meghatározott helyzetben a listán;

- eltávolítása a listából egy előre meghatározott tagja.

3.2 A végrehajtás a verem egy láncolt lista

Önmagukban, láncolt lista is gondolt, mint egy verem. Ugyanakkor a lista összehasonlítva a verem egy egydimenziós tömbben azért előnyös, mert nem előre meghatározott felbontásban.

Veremműveletekhez alkalmazandó listák

1). Elem hozzáadása a verem, akkor ki kell cserélni algoritmus Lst Stack pointer a mutató (Operation push (S, X)).

2) ellenőrzése void verem (Üres (S))

Ha Stack = Nil majd a Nyomtatás „Stack üres”

3) A minta elem a verem (POP (S))

3.3 Szervezet Getnode műveletek, Freenode és újrahasznosítása a felszabadult elemek

Ahhoz, hogy jobban használják ki a számítógép memóriájában (hogy elkerüljük a hulladékot. Ie használt elem) annak listákat hozzon létre egy ingyenes listát, amely ugyanazon a területen formátum, mint a funkció listát.

Ha a funkció felsorolja a különböző formátumú, akkor létre kell hozni egy szabad lista az egyes funkciók listája.

A tételek száma a szabad listán kell meghatározni megoldandó feladat a program. Általában a szabad lista létrehozása a számítógép memóriájában, mint egy verem. Így létrehozása (GetNode) új eleme azonos minta csak a szabad verem elem és FreeNode működés - hozzátéve egy szabad verem felszabadult elem.

Tegyük fel, hogy létre kell hozni egy üres listát a verem típus (3.6.) A mutatót a lista elején - eredménytelenül. Eljárásokat dolgoznak ki, amelyek lehetővé teszik számunkra, hogy hozzon létre egy üres lista elemet, és engedje el az elemet a listából.

3.3.1 Működés GetNode

Dolgozzon ki olyan eljárásokat, amelyek létre egy üres lista elem a mutatóval P.

Ahhoz, hogy hajtsák végre a szükséges műveleteket GetNode generált mutatóelemet értéket hozzárendelni a szabad lista mutató, és a start mutatót mozgatni a következő elemre.

Ezt megelőzően, akkor ellenőrizni kell, hogy az elemek a listában. Érvénytelen szabad listán (Igénybe = Nil), egyenértékű funkcionális túlfolyó listát.

Ha Igénybe = Nil majd a Nyomtatás „túlcsordulás” Stop

3.3.2 Működés FreeNode

Felszabadulása után Nod elem (P) a funkcionális lista FreeNode művelet (P), ez tárolja a szabad listán.

3.3.3 ártalmatlanítása a felszabadult elemek többszörösen listák

Normál műveletek vissza a felszabadított elem listája a medencében az ingyenes termékek nem mindig a hatást, ha használja a nemlineáris többszörösen listákat.

Az első módszer az újrahasznosítás - módszer számlálók. Minden elem a lista többváltozós mező ki egy számlálót, ami számít a kapcsolatok száma az elem. Amikor a számláló elem a nulla állapot, és a mező eleme nulla mutatók vannak jelen, az elem lehet vissza a medencébe a rendelkezésre álló elemek.

A második módszer - GC módszer (marker módszer). Ha néhány elem kapcsolódik, az egybites mező elem (marker) beállítása „1”, egyébként - a „0”. By túlfolyó jelösszetevõket keresi, amely a token nullára van állítva, azaz a. E. tartalmazza a szemétgyűjtő program, amely beolvassa a teljes memóriát, és rendelt visszatér a szabad lista elemeinek minden olyan elemet, amely nem jelölt marker.

3.4 egyszeresen láncolt lista, mint független adatstruktúra

Csatlakoztatni kell egy meglévő tömb elem X 5 és 6 közötti elemek.

Végezni ezt a műveletet a tömbben kell „delete” minden elem, kezdve az X6 - növelték indexek eggyel. Ennek eredményeként, megkapjuk a következő tömb beillesztési (3.7 ábra, 3.8.):

Ez az eljárás is eltarthat egy nagyon jelentős időt. Ezzel ellentétben egy kapcsolt listán behelyezés művelet során a változó értékét 2 mutatók és generációs szabad elem. És a töltött idő a művelet állandó, és nem függ a tételek számát a listában.

3.4.1 behelyezése és eltávolítása elemeket a listából

Mi határozza meg az elem, amely után a beszúrni kívánt elemet a listában. Insertion készül eljárások alkalmazásával InsAfter (Q, X), és eltávolítása - DelAfter (Q, X).

Ebben a munkában a mutatót P, hogy pont az elem, amely után a szükségességét, hogy az összeadás vagy deléció (29. ábra).

Tegyük fel, hogy szeretnénk beszúrni egy új elem az információs mezőben X eleme után mutatott a mutató P. munkás

1) Meg kell, hogy létrehoz egy új elemet.

2) Az információk terén ez az elem a hozzárendeli a X.

3) Helyezze a kapott elem.

Ez InsAfter eljárás (Q, X).

Tegyük fel, hogy törölnie kell a lista elem után következik az elem által mutatott a mutató P. munkás

1) hozzárendelése Q értékének a mutatót a elemet törölni kell.

2) Az X változó tárolja az értéket a információs mező az eltávolított elem.

3) Változó értéke a mutatót a cserélhető elem a mutató a következő elemre és termel törlését.

Ez DelAfter eljárás (P, X).

Pascal fenti eljárás a következő lesz:

eljárás InsAfter (var Q: PNode; X: Egész szám);

eljárás DelAfter (var Q: PNode; var X: Egész szám);

3.4.2 Példák jellemző műveletek listákon

Jelöljük P - dolgozó pointer elején az eljárás P = Lst. Mi is bevezetik a mutatót Q, amely mögött egy eleme P. Amikor a mutató P tagja, az utóbbi eltávolítható viszonylag Q mutatót, mint egy következő elem.

Míg P <> nulla do

Ha Info (p) = 4, akkor

Dan megrendelt emelkedő Info - mezőlista. Kell helyezni a listában a elem értékét X megsértése nélkül a megrendelő a listán.

Legyen X = 16. A kezdeti feltétel: Q = Nil, P = LST alkalmazásával. Betételem kell megtörténnie 3 és 4 közötti, elem (ris.3.10).

Míg (P <> Nil) és (X> Info (P)) do

3.4.3 fejezete elemek a listákon

Ahhoz, hogy hozzon létre egy listát a fejléc további elemet viszünk be a lista tetején, amely tartalmazhat információt a lista (ábra. 3.11).

A lista fejléc gyakran helyezik dinamikus változót, amely számos olyan elemet a listában (kivéve a nagyon cím).

Ha a lista üres, csak egy lista feje (ábra. 3.12).

Azt is kényelmes, hogy az információs fejléc mezőt a lista végén mutatót. Ezután, ha a lista használják sorban, Fr = Lst, és Re = Info (LST).

Mivel a nagy mennyiségű anyag kerül több oldalon:
1 2 3 4 5 6 7 8

Kapcsolódó cikkek