Házi feladat

Láncolt verem adatszerkezet

Általános leírás

Hozd létre a lenti felsorolásnak megfelelő LinQ-szerű metódusokat a saját láncolt verem adatszerkezetedhez! Fontos kikötések:

  1. Tilos bármilyen más beépített adatszerkezetet használni, pl. listát, tömböt, szótárat stb. Még saját magad által írt nem-verem típusú adatszerkezetet sem használhatsz, és beépített Stack adatszerkezetet sem! Csak a saját láncolt vermedet! Tehát minden átmeneti tároláshoz is köteles vagy ilyen vermet használni!
  2. Egyik metódusod futása után sem ürülhet ki az eredeti listád! Ideiglenesen persze kiürítheted, hogy az utolsó elemhez hozzáférj, de utána vissza kell állítanod az eredeti állapotot!
  3. Nem használhatsz rekurziót! Tehát a metódusaidban nem hívhatod meg saját magadat, sem közvetve, sem közvetlenül!
  4. Nem használhatsz for vagy foreach-ciklusokat sem! Csak while vagy esetleg do-while ciklusokat használhatsz!
És akkor az implementálandó metódusok:
  1. Készíts egy Where metódust, ami egy predikátum ismeretében visszaadja egy új láncolt veremben azokat az elemeket, amelyekre a predikátum igaz! (A predikátum egy olyan függvény, amely egy elemet kap és igaz vagy hamis értéket ad vissza.)
  2. Készíts egy Select metódust, ami egy selector függvény ismeretében létrehoz egy új láncolt vermet, amiben az összes eredeti veremben lévő elem selector függvény szerinti képe van. A verem.Select(x=> x+5) egy számokat tartalmazó veremben létrehoz egy olyan vermet amiben az eredeti veremben lévő elemek 5-nél nagyobb változatai vannak, az eredeti sorrendet követve.
  3. Készíts egy Reverse metódust, ami egy veremből készít egy olyan vermet, amiben pont fordítva helyezkednek el az elemek.
  4. Készíts egy First metódust, ami egy predikátum ismeretében visszaadja az első predikátumnak megfelelő elemet.
  5. Készíts egy Contains metódust, ami egy predikátum ismeretében megadja, hogy van-e az adott tulajdoságnak megfelelő elem a listában.
  6. Készíts egy Count metódust, ami egy predikátum függvény ismeretében megadja a veremben található predikátumnak megfelelő elemek számát.
  7. Készíts egy Max metódust, ami egy comparator függvény ismeretében (amely egy olyan T,T párokhoz -1, 0, 1 számokat rendelő függvény, amely -1-et ad vissza, ha a második tag nagyobb, mint az első, 0-át ad vissza, ha ugyanakkorák, és 1-et ad vissza, ha az első nagyobb mint a második.) megadja a legnagyobb elemet a veremben.

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