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

namespace ListaInterfata
{
    class ListaVers1 : ILista
    {
        private object[] l;
        private int dim, final;

        public ListaVers1()
        {
            dim = final = 0;
        }

        public ListaVers1(int x)
        {
            l = new object[dim = x];
            final = 0;
        }

        public Boolean EstePlina()
        {
            return final == dim;
        }

        public Boolean EsteVida()
        {
            return final == 0;
        }

        public Object Primul()
        {
            if (!EsteVida())
                return l[0];
            Console.WriteLine("Lista este vida!");
            return null;
        }

        public void AdaugaLaInceput(Object x)
        {
            if (x == null)
                return;
            if (EstePlina())
                Console.WriteLine("Lista este plina!");
            else
            {
                final++;
                if (EsteVida())
                    l[0] = x;
                else
                {
                    object[] temp = new object[final];
                    temp[0] = x;
                    for (int i = 1; i < final; i++ )
                    {
                        temp[i] = l[i - 1];
                    }
                    l = temp;
                }                                  
            }
        }

        public void StergePrimul()
        {
            if (EsteVida())
                Console.WriteLine("Lista este vida!");
            else
            {
                final--;
                for (int i = 0; i < final; i++)
                {
                    l[i] = l[i + 1];
                }
            }
        }

        public void AdaugaLaFinal(Object x)
        {
            if (x == null)
                return;
            if (EstePlina())
                Console.WriteLine("Lista este plina!");
            else
                l[final++] = x;
        }

        public void StergeUltimul()
        {
            if (EsteVida())
                Console.WriteLine("Lista este vida!");
            else
                final--;
        }

        public void Afiseaza()
        {
            if (EsteVida())
                Console.WriteLine("Lista este vida!");
            else
            {
                Console.Write("Lista: ");
                for (int i = 0; i < final; i++)
                    Console.Write(l[i].ToString() + " ");
                Console.WriteLine();
            }
        }
    }
}
