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

Çift yönlü bağlı listeler, boyut belirtmeksizin dizi oluşturma imkanı verir. Diziler, dizilerde var olan yeniden boyutlandırma sorununa imkan bırakmadan, bağlı listelerle yapılabilir. Ayrıca bağlı listelerle yığın, kuyruk yapıları da oluşturulabilir. Programa geçmeden bağlı listeleri resmedersek daha açıklayıcı olur diye düşünüyorum. Bağlı listeleri şu şekilde şekillendirebiliriz.

Şekilde de gördüğünüz gibi ilk node ve son node veri tutmamakta. Yeni eklenecek veriler,
iki node arasına eklenmekte.

Bu programda ben yığın yapılarını yaptım, ileride kuyruk yapılarını da paylaşacağım. Programda üç tane sınıf bulunmakta;
Node(düğüm)    : Düğüm içinde kullanılacak verileri bu sınıfta tanımladım.
Blist                   : Bağlı liste yapısını kurduğum bu sınıf, metodları da içermekte.
Application        : Uygulamayı gerçekleştirdiğimiz sınıf. Main metodundan diğer metodları bu sınıfta çağırdım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1_4.HAFTA
{
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()
{
sonNode.onceki.onceki.sonraki = sonNode;
sonNode.onceki = sonNode.onceki.onceki;
s–;
}
public void list()
{
Node dgm = new Node(“”);
dgm = sonNode;
while (dgm.onceki != ilkNode)
{
dgm = dgm.onceki;
Console.WriteLine(dgm.veri);
}
}
public void searchDelete(object ara)
{
Node temp = new Node(“”);
temp = sonNode;
while (temp.onceki != ilkNode)
{
temp = temp.onceki;
if (ara == temp.veri)
temp.onceki.sonraki = temp.sonraki;
temp.sonraki.onceki=temp.onceki;
}
s–;
}
}
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”);
bl.delete();
bl.list();
Console.WriteLine(“n——————n”);
Console.WriteLine(bl.s);
bl.searchDelete(2);
bl.list();
Console.WriteLine(“n——————n”);
}
}
}
Görüldüğü üzere add metodunda veri eklendi, delete metodunda silindi ve list metodunda veriler listelendi. searchDelete metodunu ise fazladan, ödevim olduğu için yaptım ve paylaşmak istedim. Bu metod da istenilen veriyi arayıp bulma ve o veriyi silme işlemlerini yapıyor. Csharp ile yığın yapısı oluşturmanın bir yolunu daha burada anlatmaya çalıştım. İyi çalışmalar…

Bir cevap yazın

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