Ejemplo n.º 1
0
        public override void InsertLast(Arac value)
        {
            //Listenin durumuna göre eleman eklemesi yapılır.
            Dugum tmpHead = new Dugum
            {
                Data = value
            };
            Dugum eskiSon = Head;

            if (Head == null)
            {
                Head      = tmpHead;
                Head.Next = Head;
            }
            else
            {
                while (eskiSon != null)
                {
                    if (eskiSon.Next != Head)
                    {
                        eskiSon = eskiSon.Next;
                    }
                    else
                    {
                        break;
                    }
                }
                eskiSon.Next = tmpHead;
                tmpHead.Next = Head;
            }
            Size++;
        }
Ejemplo n.º 2
0
        public override string DisplayElements()
        {
            string temp = "";
            Dugum  item = Head;

            while (item != null)
            {
                temp += "-->" + item.Data;
                item  = item.Next;
            }

            return(temp);
        }
Ejemplo n.º 3
0
        public override Dugum DeletePos()
        {
            Dugum tmp       = Head;
            Dugum tmpOncesi = Head;
            //Jhosefus problemi mantığında çıkacak elamanın ısrası bulunması için
            //N=2^a+l; çıkacak elaeman ise: 2.l+1  olmaktadır
            int d     = Size;
            int sayac = 1;

            while (d != 1)
            {
                if (d % 2 == 0)
                {
                    d     /= 2;
                    sayac *= 2;
                }
                else
                {
                    d--;
                }
            }
            //belirlenen indisteki elemanın taranarak bulunması
            if ((2 * (Size - sayac) + 1) != 1)
            {
                for (int i = 1; i < (2 * (Size - sayac) + 1); i++)
                {
                    tmpOncesi = tmp;
                    tmp       = tmp.Next;
                }
                tmpOncesi.Next = tmp.Next;
                Size--;
            }
            else
            {
                if (Size != 1)
                {
                    while (tmpOncesi.Next != Head)
                    {
                        tmpOncesi = tmpOncesi.Next;
                    }
                    tmpOncesi.Next = tmp.Next;
                    Head           = tmp.Next;
                    Size--;
                }
                else
                {
                    Size--;
                }
            }
            return(tmp);
        }
Ejemplo n.º 4
0
        private void btnTcikar_Click(object sender, EventArgs e)
        {
            //tüm çıkarma işlemlerinin tek seferde yapılması ve bu esnada geçen zamanın hesaplanması yapılmakta
            DateTime dtBas = DateTime.Now;

            for (int i = 0; i < 45; i++)
            {
                if (bk.count == 0)
                {
                    return;
                }
                temp          = bk.Remove();
                lbl1_kat.Text = temp.No + "  nolu arac  " + temp.AracRengi + "  cıktı";
                int n = r.Next(1, 3);
                if (ds.Size == 0 && y.Top != -1)
                {
                    n = 1;
                }
                else if (ds.Size != 0 && y.Top == -1)
                {
                    n = 2;
                }
                else if (ds.Size == 0 && y.Top == -1)
                {
                    continue;
                }
                ;
                switch (n)
                {
                case 1:
                    temp = y.Pop();
                    bk.Insert(temp);
                    lblBodrum.Text = temp.No + "  nolu arac  " + temp.AracRengi + "  cıktı";
                    break;

                case 2:
                    tmp = ds.DeletePos();
                    bk.Insert(tmp.Data);
                    lbl2_kat.Text = tmp.Data.No + "  nolu arac  " + tmp.Data.AracRengi + "  cıktı";

                    break;
                }
            }
            a = 0;
            TimeSpan ts = DateTime.Now.Subtract(dtBas);

            MessageBox.Show("45 aracın çıkışında geçen süre: " + ts.ToString());
        }
Ejemplo n.º 5
0
 private void btnlist_Click(object sender, EventArgs e)
 {
     //katlarda bulunan araçların ekranda listelenmesini sağlanıyor
     listBox1.Items.Clear();
     listBox2.Items.Clear();
     listBox3.Items.Clear();
     foreach (Arac item in y.List)
     {
         if (item != null)
         {
             listBox1.Items.Add(item.No + "  nolu  " + item.AracRengi + "  renkli araç");
         }
         else
         {
             continue;
         }
     }
     foreach (Arac item in bk.Queue)
     {
         if (item != null)
         {
             listBox2.Items.Add(item.No + "  nolu  " + item.AracRengi + "  renkli araç");
         }
         else
         {
             continue;
         }
     }
     for (int i = 0; i < ds.Size; i++)
     {
         Dugum t = ds.GetElement(i);
         if (t.Data != null)
         {
             listBox3.Items.Add(t.Data.No + "  nolu  " + t.Data.AracRengi + "  renkli araç");
         }
         else
         {
             break;
         }
     }
 }
Ejemplo n.º 6
0
        private void btnCikis_Click(object sender, EventArgs e)
        {
            if (bk.count == 0)
            {
                return;
            }
            temp          = bk.Remove();
            lbl1_kat.Text = temp.No + "  nolu arac  " + temp.AracRengi + "  cıktı";
            //bodrum ve 2.kattan %50 ihtimalle araç çıkışını sağlıyor
            int n = r.Next(1, 3);

            if (ds.Size == 0 && y.Top != -1)
            {
                n = 1;
            }
            else if (ds.Size != 0 && y.Top == -1)
            {
                n = 2;
            }
            else if (ds.Size == 0 && y.Top == -1)
            {
                return;
            }
            switch (n)
            {
            case 1:
                temp = y.Pop();
                bk.Insert(temp);
                lblBodrum.Text = temp.No + "  nolu arac  " + temp.AracRengi + "  cıktı";
                break;

            case 2:
                tmp = ds.DeletePos();
                bk.Insert(tmp.Data);
                lbl2_kat.Text = tmp.Data.No + "  nolu arac  " + tmp.Data.AracRengi + "  cıktı";

                break;
            }
            a = 0;
        }
Ejemplo n.º 7
0
        public override Dugum GetElement(int position)
        {
            //listemizdeki elemanların listelene bilmesi için
            Dugum retNode  = null;
            Dugum tempNode = Head;
            int   count    = 0;

            while (tempNode != null)
            {
                if (count == position)
                {
                    retNode = tempNode;
                    break;
                }
                else if (tempNode.Next != Head)
                {
                    tempNode = tempNode.Next;
                }
                count++;
            }
            return(retNode);
        }