1 / 32

Speciális Listák: Sor

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)

meira
Download Presentation

Speciális Listák: Sor

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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

  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 Fej Vége

  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 • Fix kezdetű sor • Vándorló sor • Ciklikus sor

  5. Sorok ábrázolása Fix 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.

  6. Sorok ábrázolása Vá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.

  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)

  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

  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

  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

  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

  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.

  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.

  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

  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)

  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.

  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ő.

  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.

  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.

  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.

  21. Brute Force mintaillesztés

  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.

  23. Brute Force mintaillesztés

  24. Brute Force mintaillesztés

  25. Brute Force mintaillesztés

  26. Brute Force mintaillesztés

  27. Brute Force mintaillesztés

  28. Brute Force mintaillesztés

  29. Brute Force mintaillesztés

  30. Brute Force mintaillesztés

  31. Function MEZÍTLÁBAS (A,P) nhossz(A) mhossz(P) ij0 While i<n és j<m do If A [i+1]=P[j+1] then ii+1 jj+1 Else ii-j+1 j0 End if End while If j=m then Return i-m+1 Else Return 0 Endif End function Brute Force mintaillesztés

  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

More Related