示例#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++;
        }
示例#2
0
 private void btnEkle_Click(object sender, EventArgs e)
 {
     //random olarak tüm araçlar eklenmektedir
     if (a == 0)
     {
         for (int i = 1; i <= 45; i++)
         {
             Arac a = new Arac();
             a.No        = i;
             a.AracRengi = Renkler[r.Next(0, 6)];
             if (i < 16)
             {
                 y.Push(a);
             }
             else if (i < 31 && i >= 16)
             {
                 bk.Insert(a);
             }
             else
             {
                 ds.InsertLast(a);
             }
         }
     }
     a++;
 }
示例#3
0
 public void Push(Arac item)
 {
     if (List.Length == Top + 1)
     {
         throw new Exception("Bodrum dolu.");
     }
     List[++Top] = item;
 }
示例#4
0
        public Arac Pop()
        {
            Arac temp = List[Top];

            List[Top] = null;
            Top--;
            return(temp);
        }
示例#5
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());
        }
示例#6
0
        public Arac Remove()
        {
            if (IsEmpty())
            {
                throw new Exception("kat boş");
            }
            Arac temp = Queue[front];

            Queue[front] = null;
            front++;
            if (front == 15)
            {
                front = 0;
            }
            count--;
            return(temp);
        }
示例#7
0
 public void Insert(Arac o)
 {
     if (count == size)
     {
         throw new Exception("Kat dolu.");
     }
     if (front == -1)
     {
         front = 0;
     }
     rear++;
     if (rear == 15)
     {
         rear = 0;
     }
     Queue[rear] = o;
     count++;
 }
示例#8
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;
        }
示例#9
0
 public abstract void InsertLast(Arac value);