Házi feladat

Szekvenciális kétvégű sor adatszerkezet

Általános leírás

Egy kétvégű sor adatszerkezetet készítünk, amelyben az elemek az elemek egy statikus tömbben lesznek tárolva. Fontos, hogy a sornak van egy maximális mérete, amennyi elemet be tud fogadni. A kétvégű sor úgy telik, hogy feltölthetjük a listát az elejéről és a végéről is. Amikor a lista végéről szedünk ki elemet, akkor persze az utolsó elemet töröljük. Amikor a lista elejéről veszünk ki egy elemet, akkor az elejét töröljük, és megjegyezzük, hogy honnan kezdődnek a maradék elemek. Így "kígyószerűen" előrekúszik a sor a tömb végéig. A végén, mikor a tömb végét már elérték az új elemek, akkor a tömb elején lévő már felszabadult helyeket kezdjük el feltölteni. És így tovább, a két sorvége-jelölő tehát körbe-körbe jár a tömbben.

  1. A sornak legyen egy olyan lekérdezhető (de át nem írható)tulajdonsága, hogy hány elemet tud maximálisan fogadni. Ezt a konstruktorban kérd be, és ekkora méretű statikus tömbbel dolgozz.
  2. Létezzen két privát változó arra, hogy hol a sor eleje és hol a sor vége.
  3. Készíts egy publikus Enqueue metódust, amely beletesz egy elemet a sorba, azaz a sor végét jelölő változóban tárolt helyre beír egy elemet a tömbre és a változót előre lépteti. Ha a tömb végére érne, akkor a tömb elejére (körbe)léptet.
  4. Legyen egy publikus Push metódus is, ami visszavezet az előbbi metódusra.
  5. Legyen egy publikus Pop metódus is, ami kivesz a sor végéről egy elemet és azt adja vissza.
  6. Készíts egy publikus Dequeue metódust, amely kiveszi a statikus tömbből a sor eleji elemet. A sor elejét mutató változót léptesse, ami ha a tömb végére kerülne, akkor (körbe)léptetődjön a tömb elejére.
  7. Készíts egy publikus PeekFront metódust, amely visszaadja a sor elején lévő elemet anélkül, hogy azt törölné.
  8. Készíts egy publikus PeekBack metódust, amely visszaadja a sor végén lévő elemet anélkül, hogy azt törölné.
  9. Készíts egy publikus Empty metódust, amely annak függvényében ad vissza igazat vagy hamisat, hogy üres-e a sor vagy sem.
  10. Legyen egy publikus Count tulajdonság, amely megadja, hány eleme van a sornak! Ez ne változóban legyen eltárolva, amit folyton frissítesz, hanem a soreleje és sorvége változók értékeiből számítódjon ki!

Úgy írd meg a programod, hogy mutassa be ezeket a metódusokat a felhasználónak!