Prioritásos sor (néhány példa az alkalmazásra)
A verem, és a sor egyaránt azon adatszerkezetek közé tartozik, amelyekkel gyakran szoktak példálózni a programozással foglalkozó írások. Sokszor teljesen különálló dolgokként állítják be ezeket, aki azonban elgondolkodik, könnyen rájöhet, hogy nem is állnak olyan távol egymástól, mint első pillantásra hinnénk.
Tulajdonképpen mindkettő egy-egy elvet valósít meg, nevezetesen, hogy egy tárolóba milyen módon kerülhetnek be az adatok és, hogy hogyan kerülnek ki onnan. E két egyszerű adatszerkezet esetében mindössze arról van szó, hogy egy (informatikai értelemben vett) sorozat melyik végére teszünk be az adatokat, és melyik végéről veszünk ki azokat. A „melyik vége” kifejezés alatt azt értjük, hogy sor esetében mindig a sorozat végére helyezzük az új adatot, és az elejéről vesszük ki, verem esetén pedig csak az elejét használjuk a sorozatnak mind a betétel, mind a kivétel műveleténél. Ha így tekintünk a feladatra, láthatjuk, hogy a két adatszerkezet nem is áll olyan messze egymástól.
A közös tulajdonságaikat könnyedén összefoglalhatjuk egy un. prioritásos sorban. Egy prioritásos sor annyiban különbözik egy „hagyományos” sortól, hogy elemeihez hozzá van rendelve egy érték, ez a prioritás. Ha ezt a hozzárendelést ügyesen választjuk meg, akkor megkaphatjuk a fent említett két adatszerkezetet.
Ha például egy egészeket tároló prioritásos sort az (értékre vett) identitással tekintünk mint prioritással, (azaz minden érték prioritása maga az érték) és azt mondjuk, hogy a sorunk a prioritás szerint csökkenő sorrendben tárolja az elemeket, akkor a sorból kiolvasva egy csökkenő rendezést kapunk.
Ha azt mondjuk, hogy prioritásos sorunk elején mindig a legnagyobb prioritású elem álljon, és egy új sorbeli elem mindig a legnagyobb prioritást kapja (azonnal a sor elejére áll) akkor egy vermet kapunk.
Ha azt mondjuk, hogy prioritásos sorunk elején mindig a legnagyobb prioritású elem álljon, és egy új sorbeli elem mindig a legkisebb prioritást kapja (azonnal a sor végére áll) akkor egy sort kapunk.
Az itt vázolt absztrakciós technikán kívül a program megmutatja, hogyan készíthetünk destruktort saját típusunkhoz. Ehhez az Ada.Finalization csomag Limited_Controlled típusa lesz segítségünkre.
prioritasossor.ads
prioritasossor.adb
osszehasonlitas.adb
integer_kiiras.adb
egeszeket_tartalmazo_prioritasossor.ads
prioritasossor_teszt.adb