using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2024._11._22
{
    public class Verem<T>
    {
        private T[] elemek;
        private int meret;
        private int teteje;

        public Verem(int kapacitas)
        {
            elemek = new T[kapacitas];
            meret = kapacitas;
            teteje = -1;
        }

        public void Push (T adat)
        {
            if (teteje == meret -1)
            {
                Console.WriteLine("A verem tele van, nem lehet új elemet hozzáadni");
                return;
            }

            elemek[++teteje] = adat;
        }

        public T Pop ()
        {
            if (Ures())
            {
                Console.WriteLine("A verem üres, nincs mit eltávolítani.");
                return default;
            }

            return elemek[teteje--];
        }

        public T Peek()
        {
            if (Ures())
            {
                Console.WriteLine("A verem üres, nincs csúcselem.");
                return default;
            }

            return elemek[teteje];
        }

        public bool Ures()
        {
            return teteje == -1;
        }

        public void Kiir()
        {
            if (Ures())
            {
                Console.WriteLine("A verem üres.");
                return;
            }

            Console.WriteLine("A verem elemei (csúcstól lefelé):");
            for (int i = teteje; i >= 0; i--)
            {
                Console.WriteLine(elemek[i]);
            }
        }
    }
}
