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

namespace Exemplul4
{
    class Program
    {
        static void Main(string[] args)
        {
            //Exemplu de utilizare a clasei List
            // 

            int i;

            //crearea unei liste de numere intregi
            List<int> listaNrIntregi = new List<int>();

            Nullable<int>[] arrNrIntregi = { 5, 1, 7, null, 8, null, 4 };

            for (i = 0; i < arrNrIntregi.Length; i++)
                if (arrNrIntregi[i].HasValue)
                    listaNrIntregi.Add(arrNrIntregi[i].Value);

            //parcurgerea listei de numere intregi - varianta 1
            for (i = 0; i < listaNrIntregi.Count; i++)
                Console.WriteLine(listaNrIntregi[i]);

            Console.WriteLine();

            //parcurgerea listei de numere intregi - varianta 2 (se utilizeaza un 
            //enumerator)
            IEnumerator enumListaNrIntregi = listaNrIntregi.GetEnumerator();
            while (enumListaNrIntregi.MoveNext())
            {
                string str = enumListaNrIntregi.Current.ToString();
                Console.WriteLine(str);
            }

            Console.WriteLine("\nInainte de stergere ...");
            //cautarea unui element
            if (listaNrIntregi.Contains(7))
                Console.WriteLine("7 - Exista!\n");
            else
                Console.WriteLine("7 - Nu exista!\n");

            //stergerea unui element (se indica elementul ca va fi sters)
            listaNrIntregi.Remove(7);

            //stergerea unui element (se indica pozitia in lista)
            listaNrIntregi.RemoveAt(0);
            Console.WriteLine("Dupa stergere ...");

            //cautarea unui element
            if (listaNrIntregi.Contains(7))
                Console.WriteLine("7- Exista!");
            else
                Console.WriteLine("7- Nu exista!");

            Console.WriteLine();

            //ordonarea listei
            listaNrIntregi.Sort();

            //parcurgerea listei de numere intregi
            for (i = 0; i < listaNrIntregi.Count; i++)
                Console.WriteLine(listaNrIntregi[i]);

        }
    }
}
