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++; }
public override string DisplayElements() { string temp = ""; Dugum item = Head; while (item != null) { temp += "-->" + item.Data; item = item.Next; } return(temp); }
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); }
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()); }
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; } } }
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; }
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); }