C#'ta Bağlı Liste ile Koleksiyon Oluşturmak

Bu derste bağlı liste yapısını kullanarak C#'ta array list oluşturmayı öğrenelim.

Bu derste bağlı liste yapısını kullanarak C#'ta array list oluşturmayı öğrenelim.

class dugum
    {
        public int veri;
        public dugum onceki;
        public dugum sonraki;
        public dugum(int veri)
        {
            this.veri = veri;
        }
    }

class ArrayList
    {
        public int kapasite;
        dugum ilk;
        dugum son;
        public ArrayList()
        {
            this.kapasite = 0;
            this.ilk = null;
            this.son = null;
        }          //1.Kurucu metot
        public ArrayList(int boyut)
        {
            this.kapasite = boyut;
            this.ilk = null;
            this.son = null;
        }  //2.Kurucu metot
        public void Add(int veri)
        {
            if (kapasite == Count())
            {
                kapasite = kapasite * 2;
            }
            dugum bilgi = new dugum(veri);
            if (ilk == null)
            {
                ilk = bilgi;
                son = bilgi;
                son.sonraki = null;
            }
            else
            {
                bilgi.onceki = son;
                son.sonraki = bilgi;
                son = bilgi;
                son.sonraki = null;
            }
        }
        public void Listele()
        {
            dugum gecici = ilk;
            if (gecici == null)
            {
                Console.WriteLine("ArrayList Boş...");
            }
            else
            {
                Console.WriteLine("---------------------------------------------------------------");
                Console.WriteLine("ArrayListin İçeriği");
                while (gecici != null)
                {
                    Console.WriteLine(gecici.veri);
                    gecici = gecici.sonraki;
                }
                Console.WriteLine("---------------------------------------------------------------");
            }
        }
        public void Remove(int veri)
        {
            dugum gecici = ilk;
            if (gecici == null)
            {
                Console.WriteLine("Liste bos");
            }
            else
            {
                while (gecici != null)
                {
                    if (gecici.veri == veri)
                    { break; }
                    gecici = gecici.sonraki;
                }
                if (gecici == null)
                {
                    Console.WriteLine("Silinecek eleman listede yok");
                }
                else
                {
                    if (gecici == ilk)
                    {
                        if (ilk == son)
                        {
                            ilk = null;
                            son = null;
                        }
                        else
                        {
                            ilk = ilk.sonraki;
                            ilk.onceki = null;
                        }
                    }
                    else if (gecici == son)
                    {
                        son = son.onceki;
                        son.sonraki = null;
                    }
                    else
                    {
                        gecici.onceki.sonraki = gecici.sonraki;
                        gecici.sonraki.onceki = gecici.onceki;

                    }
                }
            }
        }
        public void RemoveAt(int sira)
        {
            dugum gecici = ilk;
            int a = Count();
            if (a <= sira)
            {

                Console.WriteLine("Listede " + a + " tane eleman var lütfen bu rakami geçmeyiniz !");
            }
            else
            {
                for (int i = 0; i < sira; i++)
                {
                    gecici = gecici.sonraki;
                }
                if (gecici == ilk)
                {
                    if (ilk == son)
                    {
                        ilk = null;
                        son = null;
                    }
                    else
                    {
                        ilk = ilk.sonraki;
                        ilk.onceki = null;
                    }
                }
                else if (gecici == son)
                {
                    son = son.onceki;
                    son.sonraki = null;
                }
                else
                {
                    gecici.onceki.sonraki = gecici.sonraki;
                    gecici.sonraki.onceki = gecici.onceki;

                }
            }
        }
        public void Clear()
        {
            ilk = null;
            son = null;
        }
        public void indexof(int veri)
        {
            int sayac = 0;
            int durum = 0;
            dugum gecici = ilk;
            while (gecici != null)
            {
                if (gecici.veri == veri)
                {
                    durum = 1;
                    break;
                }
                sayac++;
                gecici = gecici.sonraki;
            }
            if(durum==1)
            Console.WriteLine("Aradığınız Eleman Listenin " + sayac + ".elemanı olarak bulundu");
            else
                Console.WriteLine("Aradığınız Eleman Listede bulunmamaktadır...");
        }
        public int Count()
        {
            int sayac = 0;
            dugum gecici = ilk;
            while (gecici != null)
            {
                sayac++;
                gecici = gecici.sonraki;
            }
            return sayac;
        }
        public int Capacity()
        {
            return kapasite;
        }
    }

class Program
    {
        static void Main(string[] args)
        {
            Console.WindowHeight = 40;
            Console.WriteLine("n--------------------------------1.ArrayList---------------------------------");
            ArrayList liste1 = new ArrayList();
            liste1.Add(10);
            liste1.Add(20);
            liste1.Add(50);
            liste1.Add(40);
            liste1.Add(70);
            liste1.Add(65);
            liste1.Listele();
            Console.WriteLine("Liste 1 in eleman sayisi = " + liste1.Count());
            Console.WriteLine("Liste 1 in kapasitesi = " + liste1.Capacity()); //kapasitesiz oluşturduğumuz için kapasite 0 dır
            liste1.Remove(20);//20 numaralı elemanı listeden siler.
            liste1.Listele();
            liste1.RemoveAt(0); //listenin 0.elemanını yani ilk elemanını siler
            liste1.indexof(40);//arama işlemi
            ////////////////////////////////////////////////////////////////////////////////////////
            Console.WriteLine("n--------------------------------2.ArrayList---------------------------------n");
            ArrayList liste2 = new ArrayList(5); //5 boyutlu liste2 arraylisti
            liste2.Listele(); // liste2 boş
            liste2.Add(12);
            liste2.Add(21);
            liste2.Add(23);
            liste2.Add(34);
            liste2.Add(67);
            Console.WriteLine("Liste 2 nin kapasitesi = " + liste2.Capacity()); //kapasite 5
            Console.WriteLine("Liste 2 nin eleman sayisi = "+liste2.Count());
            liste2.Add(63);//kapasite aşıldı
            Console.WriteLine("Liste 2 nin kapasitesi = " + liste2.Capacity()); //kapasiteyi aştığımız için 2 katına 10 a çıktı
            liste2.Listele();
            liste2.Clear(); //liste2 temizlendi
            liste2.Listele();
            Console.ReadKey();
        }
    }

 

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git