Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
5.0 kB
2
Indexable
Never
using System;
using System.Collections.Generic;

namespace arraylist
{
    public class ArrayListRek<T>
    {
        private List<object> arrayList;

        public ArrayListRek()
        {
            arrayList = new List<object>();
        }

        public void Dodawanie(T item)
        {
            DodawanieRek(arrayList, item);
        }

        public T Get(int indeks)
        {
            return GetRek(arrayList, indeks);
        }

        public void Set(int indeks, T wartosc)
        {
            SetRek(arrayList, indeks, wartosc);
        }

        public void Usuwanie(int indeks)
        {
            UsuwanieRek(arrayList, indeks);
        }

        public int LicznikRek()
        {
            return LicznikRek(arrayList);
        }

        public void WyswietlMiejscaElementow()
        {
            WyswietlMiejscaElementowRek(arrayList);
        }

        private int LicznikRek(List<object> list)
        {
            int licznik = 0;
            foreach (var item in list)
            {
                if (item is List<object>)
                {
                    licznik += LicznikRek((List<object>)item);
                }
                else
                {
                    licznik++;
                }
            }
            return licznik;
        }

        private void DodawanieRek(List<object> list, T item)
        {
            if (LicznikRek(list) > 0 && list[list.Count - 1] is List<object>)
            {
                DodawanieRek((List<object>)list[list.Count - 1], item);
            }
            else
            {
                list.Add(item);
            }
        }

        private T GetRek(List<object> list, int indeks2)
        {
            foreach (var item in list)
            {
                if (item is List<object>)
                {
                    var wynik = GetRek((List<object>)item, indeks2);
                    if (wynik != null)
                    {
                        return wynik;
                    }
                }
                else
                {
                    if (indeks2 == 0)
                    {
                        return (T)item;
                    }
                    indeks2--;
                }
            }
            return default(T);
        }

        private void SetRek(List<object> list, int indeks2, T wartosc)
        {
            for (int i = 0; i < list.Count; i++)
            {
                var item = list[i];
                if (item is List<object>)
                {
                    SetRek((List<object>)item, indeks2, wartosc);
                }
                else
                {
                    if (indeks2 == 0)
                    {
                        list[i] = wartosc;
                        return;
                    }
                    indeks2--;
                }
            }
        }

        private void UsuwanieRek(List<object> list, int indeks2)
        {
            for (int i = 0; i < list.Count; i++)
            {
                var item = list[i];
                if (item is List<object>)
                {
                    UsuwanieRek((List<object>)item, indeks2);
                }
                else
                {
                    if (indeks2 == 0)
                    {
                        list.RemoveAt(i);
                        return;
                    }
                    indeks2--;
                }
            }
        }

        private void WyswietlMiejscaElementowRek(List<object> list)
        {
            for (int i = 0; i < list.Count; i++)
            {
                var item = list[i];
                if (item is List<object>)
                {
                    WyswietlMiejscaElementowRek((List<object>)item);
                }
                else
                {
                    Console.WriteLine($"Indeks {i}: {item}");
                }
            }
        }
    }

    class Program
    {
        static void Main()
        {
            ArrayListRek<object> arrayListRek = new ArrayListRek<object>();

            // Dodawanie elementów
            arrayListRek.Dodawanie(87);
            arrayListRek.Dodawanie("Hello");
            arrayListRek.Dodawanie(2.96);

            // Wyświetlanie zawartości
            Console.WriteLine($"Licznik: {arrayListRek.LicznikRek()}");
            arrayListRek.WyswietlMiejscaElementow();

            // Zmiana wartości
            arrayListRek.Set(1, "World");

            // Usuwanie elementu
            arrayListRek.Usuwanie(0);

            // Wyświetlanie zmienionej zawartości
            Console.WriteLine("\nPo zmianach:");
            Console.WriteLine($"Licznik: {arrayListRek.LicznikRek()}");
            arrayListRek.WyswietlMiejscaElementow();
            Console.ReadKey();
        }
    }
}
Leave a Comment