Á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:
- 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!
- 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!
- Nem használhatsz rekurziót! Tehát a metódusaidban nem hívhatod meg saját magadat, sem közvetve, sem közvetlenül!
- Nem használhatsz for vagy foreach-ciklusokat sem! Csak while vagy esetleg do-while ciklusokat használhatsz!
- 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.)
- 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.
- 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.
- Készíts egy First metódust, ami egy predikátum ismeretében visszaadja az első predikátumnak megfelelő elemet.
- 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.
- 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.
- 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!