Csharp' ta Çift Yönlü Bağlı Listeler: Kuyruk Yapısı

Daha önce çift yönlü bağlı listelerle yığın yapısını yapmıştım. Bu gün de kuyruk yapısını sizlere anlatmaya çalışacağım. Kuyruk yapıları, yığın yapılarının aksine FIFO prensibi ile çalışırlar. Yani ilk giren ilk çıkar prensibi. Günlük hayattan da -ben çok beklediğimden bu örneği vereyim- otobüs kuyruklarını örnek verebiliriz. Otobüs kuyruklarında ilk sıraya geçen, otobüse ilk biner. Programa geçmeden önce çift yönlü bağlı listelerin gösterimini de aşağıda tekrar veriyorum. Ezberden kaçmak için şekli dikkatli bir şekilde inceleyip bağlantıların mantığını anlamak daha faydalı olacaktır.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Queue
{
class Node
{
public object veri; //Düğümde tutulacak veri
public Node onceki, sonraki;//Düğümün adres bilgileri
public Node(object veri)
{
this.veri = veri;
this.onceki = null;
this.sonraki = null;
}
}
public class BList
{
Node ilkNode = new Node(“”);
Node sonNode = new Node(“”);
public int s = 0;
public BList()//Bağlı liste yapısı kurulur
{
this.ilkNode.sonraki = this.sonNode;
this.sonNode.onceki = this.ilkNode;
this.sonNode.sonraki = null;
this.ilkNode.onceki = null;
}
public void add(object veri)
{
Node yeninode = new Node(veri);
yeninode.onceki = sonNode.onceki;
sonNode.onceki.sonraki = yeninode;
sonNode.onceki = yeninode;
yeninode.sonraki = sonNode;
s++;
}
public void delete()
{
ilkNode.sonraki.sonraki.onceki = ilkNode;
ilkNode.sonraki = ilkNode.sonraki.sonraki;
s–;
}
public void list()
{
Node dgm = new Node(“”);
dgm = ilkNode;
while (dgm.sonraki != sonNode)
{
dgm = dgm.sonraki;
Console.WriteLine(dgm.veri);
}
}
}
class Application
{
static void Main()
{
BList bl = new BList();
bl.add(1);
bl.add(2);
bl.add(3);
bl.add(4);
bl.add(5);
bl.list();
Console.WriteLine(“n——————n”);
Console.WriteLine(“Eleman sayısı= “ + bl.s);
Console.WriteLine(“n——————n”);
bl.delete();
bl.list();
Console.WriteLine(“n——————n”);
Console.WriteLine(“Eleman sayısı= “ + bl.s);
Console.WriteLine(“n——————n”);
}
}
}

 

Görüldüğü gibi kuyruk yapılarının yığın yapılarından tek farkı listeleme ve silme metodunda. Bir önceki yazım olan yığın yapılarını incelerseniz aradaki küçük farkı kolaylıkla görebilirsiniz. Program üzerinde yazdığım yorum satırlarıyla programı açıkladım, tekrar burda açıklamaya gerek duymuyorum. Anlaşılmayan noktalarda yine yardımcı olmaya çalışırım. İyi çalışmalar…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir