Esempio n. 1
0
 public void Push(Araba item)
 {
     if (items.Length == Top + 1)
     {
         throw new Exception("Hata: Stack doldu... (Overflow)");
     }
     items[++Top] = item;//dizinin başından sonuna sırayla elemanlar dizilir
 }
Esempio n. 2
0
        public Araba Pop()
        {
            if (IsEmpty())
            {
                throw new Exception("Hata: Stack boş...(Downflow)");
            }
            Araba temp = items[Top--];//dizinin sonundan başına doğru tek tek elemanlar çıkarılır

            return(temp);
        }
Esempio n. 3
0
        private void btnArabaCikart_Click(object sender, EventArgs e)
        {
            string yaz = "";
            Random rnd = new Random();
            int    randomSayi;
            int    daireselKalan = 15;
            Araba  temp          = new Araba();

            while (StackK.IsEmpty() == false || DaireselK.count != 0)//kuyruk boş olmadığı ve eleman sayısı 0 olmadığı sürece devam eder
            {
                randomSayi = rnd.Next(0, 2);
                if (KuyrukK.IsEmpty())
                {
                    break;
                }
                else if (randomSayi == 0)
                {
                    if (StackK.IsEmpty() == false)    //stack ta eleman bittiğinde hata vermemesi kontrolünü yapar
                    {
                        temp = KuyrukK.Remove();      //kuyrukta hala eleman varsa ve random değer 0 geldiyse eleman çıkarır
                        KuyrukK.Insert(StackK.Pop()); //çıkan elemanı ilk kata ekler
                        yaz += temp.katBilgisi + ". kattaki " + temp.arabaNumarasi + ". araba." + Environment.NewLine;
                    }
                    else
                    {
                        continue;
                    }
                }
                else if (randomSayi == 1)
                {
                    if (DaireselK.count != 0)
                    {
                        temp = KuyrukK.Remove();//orta katımızdan bir eleman çıkar
                        KuyrukK.Insert(DaireselK.DeletePosition(Josephus(daireselKalan)));
                        daireselKalan--;
                        yaz += temp.katBilgisi + ". kattaki " + temp.arabaNumarasi + ". araba." + Environment.NewLine;
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            if (KuyrukK.IsEmpty() == false)
            {
                for (int i = 0; i < 15; i++)
                {
                    temp = KuyrukK.Remove();
                    yaz += temp.katBilgisi + ". kattaki " + temp.arabaNumarasi + ". araba." + Environment.NewLine;
                }
            }
            txtCikanlar.Text = yaz;
        }
 public void InsertLast(Araba Eklenen)
 {
     if (IsEmpty())//ilk deger  eklenme işinin yapıldığı yer
     {
         Head      = Eklenen;
         Last      = Eklenen;
         Last.Next = Head;
         Head.Next = Last;
     }
     else
     {
         Last.Next = Eklenen; //birden fazla node için girilen else fonksiyonu
         Last      = Eklenen; //yeni geleni sona ekleyerek son elemanın nex ini de head i göstererek döngüsel bir yapı oluşturulur
         Last.Next = Head;
     }
     count++;
 }
        public void Insert(Araba A)
        {
            if (count == size)
            {
                throw new Exception("Queue dolu.");
            }

            if (front == -1)//ilk eklemede front 1 artar
            {
                front = 0;
            }
            if (rear == size - 1)//dizi tamamen dolduysa,doldurmaya dizinin başından devam edilir
            {
                rear        = 0;
                Queue[rear] = A;
            }
            else
            {
                Queue[++rear] = A;//hala son kısımlarda boş yer var ise sırayla doldurmaya devam eder
            }
            count++;
        }
        public Araba DeletePosition(int position)//gelen değere göre silme işlemi
        {
            Araba temp         = new Araba();
            Araba SilinenAraba = new Araba();

            temp = Head;
            if (IsEmpty())
            {
                throw new Exception("Hata: Dairesel bağlı liste boş...");
            }
            else if (position == 0)//silinecek son eleman kaldıysa
            {
                if (count == 1)
                {
                    count--;
                    Head = null;
                    Last = null;
                    return(temp);
                }
                else
                {
                    Last.Next = Head.Next;
                    Head      = Head.Next;
                    count--;
                    return(temp);
                }
            }
            else
            {
                for (int i = 0; i < position - 1; i++) //birden fazla silinecek varsa
                {
                    temp = temp.Next;                  //gelen parametreye kadar listede dolaşılır
                }
                SilinenAraba = temp.Next;              //silinecek eleman bir değişkende tutulur
                temp.Next    = temp.Next.Next;         //silinenin bir öncesi bir sonrasını gösterir ve dairesel yapısı korunmuş olur
                count--;
                return(SilinenAraba);
            }
        }
        public Araba Remove()
        {
            if (IsEmpty())
            {
                throw new Exception("Queue boş.");
            }

            Araba temp = Queue[front];

            Queue[front] = null;   //silme işlemi baştan yapılır
            if (front == size - 1) //dizinin son elemanında sonra hala silinecek değer var ise dizinin başına geri dönülür
            {
                front = 0;
            }
            else
            {
                front++;
            }

            count--;

            return(temp);
        }
Esempio n. 8
0
        private void btnArabaEkle_Click(object sender, EventArgs e)
        {
            string yaz = "";

            for (int i = 1; i <= 15; i++)
            {
                Araba A = new Araba();
                A.arabaNumarasi = i;
                A.katBilgisi    = 0;
                Araba B = new Araba();
                B.arabaNumarasi = i;
                B.katBilgisi    = 1;
                Araba C = new Araba();
                C.arabaNumarasi = i;
                C.katBilgisi    = 2;
                yaz            += A.katBilgisi + ". kattaki " + A.arabaNumarasi + ". araba." + Environment.NewLine;
                yaz            += B.katBilgisi + ". kattaki " + B.arabaNumarasi + ". araba." + Environment.NewLine;
                yaz            += C.katBilgisi + ". kattaki " + C.arabaNumarasi + ". araba." + Environment.NewLine;
                StackK.Push(A);//arabalar stack,kuyruk ve dairesel bağlı listelere doldrulur
                KuyrukK.Insert(B);
                DaireselK.InsertLast(C);
            }
            txtEklenenler.Text = yaz;//tüm eklenen arabalar textbox a yazdırılır
        }
Esempio n. 9
0
        private void btnBesSaniye_Click(object sender, EventArgs e) //programın 5 sn bekledikten sonra ortalama ne kadar problem çözeceğini ekrana gösterir
        {
            DateTime BaslangicZamani = DateTime.Now;                //butona tıklandığı anki zamanı  alır
            int      cozumSayisi     = 0;

            while (DateTime.Now.Second - BaslangicZamani.Second < 5)//şu anki ve butona tıklanan anki saniye 5 ten küçük oldukça çalıştırıcak
            {
                string yaz = "";
                for (int i = 1; i <= 15; i++)
                {
                    Araba A = new Araba();
                    A.arabaNumarasi = i;
                    A.katBilgisi    = 0;
                    Araba B = new Araba();
                    B.arabaNumarasi = i;
                    B.katBilgisi    = 1;
                    Araba C = new Araba();
                    C.arabaNumarasi = i;
                    C.katBilgisi    = 2;
                    yaz            += A.katBilgisi + ". kattaki " + A.arabaNumarasi + ". araba." + Environment.NewLine;
                    yaz            += B.katBilgisi + ". kattaki " + B.arabaNumarasi + ". araba." + Environment.NewLine;
                    yaz            += C.katBilgisi + ". kattaki " + C.arabaNumarasi + ". araba." + Environment.NewLine;
                    StackK.Push(A);
                    KuyrukK.Insert(B);
                    DaireselK.InsertLast(C);
                }
                txtEklenenler.Text = yaz;
                yaz = "";
                Random rnd = new Random();
                int    randomSayi;
                int    daireselKalan = 15;
                Araba  temp          = new Araba();
                while (StackK.IsEmpty() == false || DaireselK.count != 0)
                {
                    randomSayi = rnd.Next(0, 2);
                    if (randomSayi == 0)
                    {
                        if (StackK.IsEmpty() == false)
                        {
                            temp = KuyrukK.Remove();
                            KuyrukK.Insert(StackK.Pop());
                            yaz += temp.katBilgisi + ". kattaki " + temp.arabaNumarasi + ". araba." + Environment.NewLine;
                        }
                        else
                        {
                            continue;
                        }
                    }
                    else if (randomSayi == 1)
                    {
                        if (DaireselK.count != 0)
                        {
                            temp = KuyrukK.Remove();
                            KuyrukK.Insert(DaireselK.DeletePosition(Josephus(daireselKalan)));
                            daireselKalan--;
                            yaz += temp.katBilgisi + ". kattaki " + temp.arabaNumarasi + ". araba." + Environment.NewLine;
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
                for (int i = 0; i < 15; i++)
                {
                    temp = KuyrukK.Remove();
                    yaz += temp.katBilgisi + ". kattaki " + temp.arabaNumarasi + ". araba." + Environment.NewLine;
                }
                txtCikanlar.Text = yaz;
                cozumSayisi++;
            }
            lblCozumMiktari.Text = cozumSayisi.ToString();
            cozumSayisi          = 0;
        }