32
1 Speciális Listák: Sor A sor adatszerkezet olyan speciális lista, amelyet a műveletei definiálnak. 1. ACCESS HEAD 3. POP itt GET-nek nevezzük 5. INJECT itt PUT-nak nevezzük FIFO adatszerkezetnek is nevezik (First In First Out) Ennek megfelelően a sorba az elemek az érkezésnek megfelelő sorrendben kerülnek, az újak mindig a sor végére kerülnek (PUT művelettel). Feldolgozni a sor első elemét szokás (ACCESS HEAD vagy GET), ami legtöbbször egyben fizikai törlést is jelent (GET) 15:27:18

Speciális Listák: Sor

  • Upload
    meira

  • View
    77

  • Download
    0

Embed Size (px)

DESCRIPTION

Speciális Listák: Sor. A sor adatszerkezet olyan speciális lista, amelyet a műveletei definiálnak. 1. ACCESS HEAD 3. POP itt GET-nek nevezzük 5. INJECT itt PUT-nak nevezzük FIFO adatszerkezetnek is nevezik (First In First Out) - PowerPoint PPT Presentation

Citation preview

Page 1: Speciális Listák: Sor

1

Speciális Listák: Sor A sor adatszerkezet olyan speciális lista, amelyet a

műveletei definiálnak. 1. ACCESS HEAD 3. POP itt GET-nek nevezzük 5. INJECT itt PUT-nak nevezzük

FIFO adatszerkezetnek is nevezik (First In First Out)

Ennek megfelelően a sorba az elemek az érkezésnek megfelelő sorrendben kerülnek, az újak mindig a sor végére kerülnek (PUT művelettel).

Feldolgozni a sor első elemét szokás (ACCESS HEAD vagy GET), ami legtöbbször egyben fizikai törlést is jelent (GET)

2:27:25

Page 2: Speciális Listák: Sor

2

Speciális Listák: Sor

Sorba történő írás művelete, PUT művelet, az olvasás (fizikai törlés) művelete a GET

művelet. Logikai törlés nincs Rendezés nincs értelmezve Keresés nincs értelmezve Elérés: Csak az első elemet tudjuk elérni

2:27:25

Page 3: Speciális Listák: Sor

3

Sorok ábrázolása Szétszórt ábrázolás :

egyirányban láncolt listával, két segédmutatóval (fej és vége mutató) Feldolgozás a fejmutató által hivatkozott

elemet Bővítés: az utolsó mutató után a mutatók

átállításával

adat1adatn NILadat2Fej

Végeadat3

adat4

2:27:25

Page 4: Speciális Listák: Sor

4

Sorok ábrázolása

Folytonos ábrázolás: Folytonos reprezentációk mindegyike egy

vektorban tárolja a sor elemeit Fontos a sor elejének és végének jelzése

1. Fix kezdetű sor

2. Vándorló sor

3. Ciklikus sor

2:27:25

Page 5: Speciális Listák: Sor

5

Sorok ábrázolásaFix kezdetű sor

A sor első eleme a vektor első tárhelyén helyezkedik el, az utolsó elem mutatója v.

Üres a sor: v=0 Tele van a sor: v=n Új elem beírása: v+1-edik helyre kerül, majd v eggyel

megnő. Elem törlése: Nehézkes, sok adatmozgatással jár. A sor

első elemét dolgozzuk fel, a sor eleje pedig mindig ugyanott kell, hogy legyen, ezért törlés után a többi elemet rámozgatjuk az előző pozícióra. v értéke pedig eggyel csökken.

2:27:25

Page 6: Speciális Listák: Sor

6

Sorok ábrázolásaVándorló sor

A sokszori adatmozgatást küszöböli ki Elvetjük azt a megszorítást, hogy az első elem az első helyen

álljon. Megengedjük, hogy az első elem helye vándoroljon. Ehhez segédmutatók, e és a szokásos v szükséges Üres a sor: e=v=0 Tele a sor: e=1, v=n Új elem bekerülése: A v mutatót követő pozícióra kerül be, ha

a sor nincsen tele. Bővítéskor (PUT-nál) előfordulhat, hogy a v az utolsón áll, de

az e vándorlása miatt a sor nincs tele: ilyenkor (csak ilyenkor), adatmozgatást hajtunk végre: A legelső pozícióig toljuk a sort előre.

2:27:25

Page 7: Speciális Listák: Sor

7

Sorok ábrázolása

Ciklikus sor:

Az adatmozgatást eddig még nem küszöböltük ki teljesen. A ciklikus sorban az elejét és végét jelző mutató vándorlását a határokon keresztül is megengedjük.– Üres a sor: e=v=0

– Tele a sor: e=1 és v=n, vagy e = v+1.

– Új elem: szabályokat figyelembe véve, ha a sor nincs tele, akkor a v+1-edik helyre kerül, (esetleg v visszaugrik az elejére).

– Törlés: e mutató által mutatott elem, majd e=e+1.

POP PUT (2x)

1 2 3 e v n 1 2 3 e v2:27:25

Page 8: Speciális Listák: Sor

8

Műveletek sorokkal Létrehozás:

Az üres sort hozzuk létre

Bővítés: Mindig a végén, a PUT művelettel

Törlés: A sor első elemére vonatkozik (GET), az első elem elérése és törlése

(ACCESS HEAD + POP)

Csere, Rendezés, Elérés, Keresés, Bejárás Nincs, ill. nem értelmezett

Feldolgozás Definíciója szerint

2:27:25

Page 9: Speciális Listák: Sor

9

A sor adatszerkezet használata

Sorok felhasználása az informatikában Pufferek megvalósítására (termelő – feldolgozó) A hierarchikus adatszerkezeteket a bejáráskor

sorokba képezzük le

2:27:25

Page 10: Speciális Listák: Sor

10

Speciális sorok

Ezek sorokból képzettek. Megőrzik a sor tulajdonságait és továbbiakkal egészülnek ki

Két végű sor Olyan sor, amelynél mind a hat speciális lista művelet

megengedett Ez logikailag hasonlít két db aljánál összeragasztott veremre

RPUT RGET

GET PUT2:27:25

Page 11: Speciális Listák: Sor

11

Két végű sor

A két végű sornak további származtatott szerkezetei léteznek

Input korlátozott kétvégű sor: A hagyományos GET és PUT művelet mellett az RGET

megengedett, de az RPUT nem.

Output korlátozott kétvégű sor Az előző párja

Olyan kétvégű sor, amelyben a GET és a PUT műveletek mellett az RPUT megengedett az RGET nem

Ezen speciális sorok reprezentációja folytonos és szétszórt is lehet, de két irányban láncolt listával a legjobb megvalósítani őket

2:27:25

Page 12: Speciális Listák: Sor

12

Prioritásos sor

• Prioritásos sor– Olyan sor, amelyben az adatelemek egy részéhez prioritás

értéket rendelünk (1…n), majd a sorban az adatelemek prioritás értékük szerinti növekvő sorrendben helyezkednek el.

– Feldolgozás:

• Először a legmagasabb prioritású (legkisebb prioritás érték) elemeket dolgozzuk fel, ezután jöhet a következő legmagasabb szint.

• A prioritás értékkel nem rendelkező elemek közül csak akkor dolgozhatunk fel, ha már nincs prioritással rendelkező elem a sorban.

2:27:25

Page 13: Speciális Listák: Sor

13

Prioritásos sor– Ugyanezt az eredményt adja, ha olyan sorok együttesére

gondolunk, ahol minden sorhoz tartozik egy prioritás érték. Ugyanakkor minden adatelemhez is tartozik egy-egy prioritás érték. Az adatelemek mindig a nekik megfelelő prioritási sorban tartózkodnak. A jelöletlen sor: A prioritással nem rendelkező elemek sora.

1

2

:

:

n2:27:25

Page 14: Speciális Listák: Sor

14

Sztring Ez egy szekvenciális adatszerkezet.

Olyan lista, amelynek elemeit egy ABC szimbólumai alkotják.

Olyan sztringekkel fogunk foglalkozni, melyek elemei karakterek lesznek.

A sztringeken értelmezhetők a lista alapműveletei Bármely karakter elérése

Részsztring képzés

Konkatenáció (összefűzés)

Sztringek lényeges jellemzője a hosszuk

Feldolgozásuk során fontos az üres sztring fogalma

2:27:25

Page 15: Speciális Listák: Sor

15

Sztring adatszerkezet műveletei Létrehozás

Megadjuk (felsoroljuk) a sztring összes karakterét

Bővítés Elején, végén, bármely két karakter között részsztring beillesztésével,

majd konkatenálásával

Törlés Részsztringet lehet törölni

Csere Részsztringet részsztringgel

Keresés

Részsztring keresése (mintaillesztéssel)

2:27:25

Page 16: Speciális Listák: Sor

16

Sztring reprezentációja Szétszórt és folytonos is lehet Szétszórt

A listafejben található, a sztringre vonatkozó hossz információ és

az alábbi technikák lehetségesek Egy-egy karakter egy listaelem

(rossz helykihasználás, a mutató nagyobb tárhelyet használ, mint a karakter).

Változó hosszúságú listaelemekkel. Egy-egy listaelem ilyenkor több karaktert tartalmaz (részsztringek). Ekkor a listafejben a részsztringek hosszáról is szükséges információ.

Nehéz nagy részsztringeket kezelni, ezért inkább folytonosan szokták ábrázolni.

2:27:25

Page 17: Speciális Listák: Sor

17

Sztring reprezentációja Folytonos

Minden sztringet azonos hosszú tárterületen tárolunk. Ha szükséges, a ki nem használt tárterületeket speciális karakterrel töltve fel.

Változó hosszon, minden sztring előtt megadva annak hosszát. A lefoglalt tárhelyek közül egy szám információ lesz az első.

4 a l m a 0 5 k ö r t e 2 f a

a l m a 0 0 0 0 0 0 0 0 0 0 k ö r t e 0 0 f a 0 0 0 0 0

2:27:25

Page 18: Speciális Listák: Sor

18

Sztring reprezentációja

Folytonos Folyamatos tárolásnál a sztringek végén speciális

karaktert (végjel) alkalmazunk.

Folyamatosan, hosszúságinformáció és végjelek nélkül. Kiegészítésként használunk egy nyilvántartást a sztringek kezdőcímével és hosszával.

a l m a 0 0 k ö r t e 0 f a 0

a l m a k ö r t e f a

4 0 5 21 5 5 10

2:27:25

Page 19: Speciális Listák: Sor

19

Mintaillesztés Sztringek felhasználása: Formális nyelvek, formális

rendszerek, szövegszerkesztő programok, hypertextek.

Mindegyik területen fontos a részsztring keresés, vagyis a mintaillesztés.

Alapsztring: A=a1a2a3…an

Minta: P=p1…pm (általában n>>m, jobb lenne: n~m)

Kérdés: a rövid minta a hosszú alapsztringben megtalálható-e, ha igen hol, hányszor, és azok hol.

Több tucat, (több száz) mintaillesztési algoritmus létezik.

2:27:25

Page 20: Speciális Listák: Sor

20

Brute Force mintaillesztés Mezítlábas, hétköznapi algoritmusok. Nem nagyon

hatékonyak.

Összehasonlítja az alapsztring első karakterét a minta első karakterével

Ha egyezést talál, mindkét sztringben tovább lép és azokat hasonlítja össze (második karaktert a második karakterrel).

addig, amíg el nem érte és össze nem hasonlította a P utolsó karakterét is, vagy pedig valahol eltérést nem talál.

Ha P-t végig összehasonlította és egyezést tallt, akkor P benne volt az alapsztringben.

2:27:25

Page 21: Speciális Listák: Sor

21

A b a c b a b a b a a b c b a b↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 22: Speciális Listák: Sor

22

Brute Force mintaillesztés

Az esetek többségében azonban valahol eltérést talál.

Mit tegyünk ilyenkor? Visszaugrunk a minta első karakterére Az alapsztring legutóbbi összehasonlításának

kezdő karakterét követő karakterrel újrakezdjük a folyamatot.

A keresés véget érhet úgy is, hogy Addig-addig kezdjük újra a keresést, amíg el nem jutunk

az alapsztring végére, és ott is eltérés van. Ekkor jeleznünk kell, hogy a minta nincs benne az alapsztringben.

2:27:25

Page 23: Speciális Listák: Sor

23

A b a c b a b a b a a b c b a b↕ ↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 24: Speciális Listák: Sor

24

A b a c b a b a b a a b c b a b↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 25: Speciális Listák: Sor

25

A b a c b a b a b a a b c b a b↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 26: Speciális Listák: Sor

26

A b a c b a b a b a a b c b a b↕ ↕ ↕ ↕ ↕ ↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 27: Speciális Listák: Sor

27

A b a c b a b a b a a b c b a b↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 28: Speciális Listák: Sor

28

A b a c b a b a b a a b c b a b↕ ↕ ↕ ↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 29: Speciális Listák: Sor

29

A b a c b a b a b a a b c b a b↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 30: Speciális Listák: Sor

30

A b a c b a b a b a a b c b a b↕ ↕

P a b a b a c a

Brute Force mintaillesztés

2:27:25

Page 31: Speciális Listák: Sor

31

Brute Force mintaillesztés

Function MEZÍTLÁBAS (A,P)1. nhossz(A)2. mhossz(P)3. ij04. While i<n és j<m do5. If A [i+1]=P[j+1] then6. ii+17. jj+18. Else

9. ii-j+110. j011. End if12. End while13. If j=m then14. Return i-m+115. Else16. Return 017. End ifEnd function

2:27:25

Page 32: Speciális Listák: Sor

32

Brute Force mintaillesztés

Mezítlábas algoritmus a léptetés után elfelejt minden információt az előzőleg összehasolított karakterekről

Így előfordulhat, hogy újra és újra összehasonlítja az első karakterét a minta sztring minden karakterével

Ha megfelelően felhasználnánk a korábbi összehasonlításokból nyert információkat, soha nem kellene újra vizsgálni az alapsztring azon karaktereit, melyek már illeszkedtek a p minta egyik karakterére

2:27:25