Tweet

Linked List

Bu makalemizde sizlere veri yapılarından olan bağlı sıralı liste (Linked List) ve kuyruk (Queue) yapılarından bahsedeceğim.Öncelikler bu konular hakkında fikir edinip daha sonra source kodlarına döneceğiz.Yazacağımız kuyruk kodunu bağlı sıralı liste ile
oluşturacağız.[...]
Bağlı sıralı liste önemli veri yapılarındandır.Dizilerin güçlerini yitirdiği yerlerde devreye girerler.Diziler programlama açısından kullanışlı olsada silme ve ekleme işlemlerinde yetersiz kalırlar.BU zayıflığı yenmek bağlı sıralı liste ile mümkün olmuştur.Bağlı sıralı liste silme ve ekleme işlemlerine iyi bir çözüm olacaktır.Tabi bu veri yapısınında eksik olduğu yerler mevcuttur.Arama ve geri çağırma işlemlerinde bağlı sıralı liste zayıf kalmaktadır.Bu sebeblerden ötürü bağlı sıralı liste (Linked List) yazılım dünyasında vazgeçilmezler arasında yer almıştır.Benim için bu veri yapısı özgürlük demektir.

Kuyruk veri yapısına gelecek olursak eğer ,nette gezerken denk geldiğim bu kuyruk hikayesi çok hoşuma gitti ve hemen site ile paylaşmaya karar verdim.Bu tür konu anlatımının hafızanızda daha iyi yer tutacağina inanıyorum.Şimdi veri yapılarından olan kuyruk ile devam edelim.

Yine örneklerle anlatalım. Bir banka sahibi olduğunuzu düşünün.
Sahibi olduğunuz banka büyük bir mali krizin eşiğinde ve müşterilerin paralarını çekmek
için bankanıza doğru yöneldikleri haberini alıyorsunuz. Pencereden dışarıya baktığınızda
müşterilerin teker teker bankanızın önünde kuyruğa girdiklerini görüyorsunuz.
Parasını çeken sıradan çıkıyor ve sıranın en önüne gelen yeni kişi parasını çekmeye hazırlanıyor. Ve bu arada sıraya yeni gelen kişiler de teker teker sıranın en arkasına dahil olarak sırayı büyütüyor. Sırada kimse kalmadığında siz de pencereden ayrılıp işinizin başına dönüyorsunuz.

Yukarıda anlattığım kısa hikaye kuyruk hakkında çok önemli bilgiler içeriyor.
Banka sırasına giren her kişi bir objeyi temsil ediyor. Sıraya ilk gelen kişi sıranın en sonundaki kişinin arkasına geçiyor (enqueue). Sıradan çıkan ilk kişi sıranın en önünde bulunan ve işini bitirmiş olan kişi oluyor (dequeue). Kuyruk hakkında bilmemiz gereken şey eklediğimiz obje, listemizin en sonuna eklenir ve istekte bulunduğumuz obje, listenin başından verilir. Ayrıca bu normal kuyruk yapısı dışında, öncelik kuyruğu (priortiy queue) veya olay kuyruğu (event queue) gibi diğer kuyruk yapıları da kullanılmaktadır.

Kuyruk veri yapısı bilgisayar alanında ağ , işletim sistemi istatistiksel hesaplama,simülasyon... ve bir çok yerde kullanılmaktadır.Örneğin yazıcı kuyruk yapısı ile işlemleri gerçekleştirmektedir.Yazdır komutu ile verilen birden fazla belgeden ilki yazdırılmakta,diğerleri ise kuyrukta bekletilmelte , sırası geldiğinde yazdırılmaktadır. Şİmdi source kodunu verelim;

CODE:
/*

* Written: Seyhan

* www.thecoders.net

* seyhan@thecoders.net

*/



import java.io.*;



//=======================================================

class Link

{

public double data;

public Link next;



//==================================================



public Link(double d)

{

data = d;

next = null;

}

//================================================

public void display()

{

System.out.print(data+"--");



}

//=================================================

}

//***********************************************************************



class FirstLastList

{

private Link first;

private Link last;



//===================================================

public FirstLastList()

{

first = null;

last = null;

}

//===================================================



public boolean isEmpty()

{

if(first == null)

return true;

else

return false;

}

//=====================================================



public void insertLast(double item)

{

Link newlink = new Link(item);

if(isEmpty())

first = newlink;

else

last.next = newlink;

last = newlink;

}

//===================================================



public double deleteFirst()

{

double temp = first.data;

if(first.next == null)

last = null;

first = first.next;

return temp;

}

//=================================================

public void displayList()

{

Link current = first;

while(current != null)

{

current.display();

current = current.next;

}

System.out.println("");

}

//===================================================

}

//**********************************************************************



class LinkQueue

{

private FirstLastList theList;

//====================================================



public LinkQueue()

{

theList = new FirstLastList();



}

//================================================

public boolean isEmpty()

{

return theList.isEmpty();

}

//===============================================



public void insert(double j)

{

theList.insertLast(j);

}

//==================================================



public double remove()

{

return theList.deleteFirst();

}

//===================================================

public void displayQueue()

{

System.out.print("Queue ( front-->rear):");

theList.displayList();

}

//===================================================

}

//**************************************************************

class LinkQueueApp

{

public static void main(String[] args) throws IOException

{

LinkQueue theQueue = new LinkQueue();



theQueue.insert(20);

theQueue.insert(40);



theQueue.displayQueue();



theQueue.insert(60);

theQueue.insert(80);



theQueue.displayQueue();



theQueue.remove();

theQueue.remove();



theQueue.displayQueue();

}

}

//******************************************************************


Umarım herkes için yaralı bir çalışma olmuştur.Herkes en iyi şekilde faydalanabilir.Hekese kolay gelsin.

Saygılarımla.
Seyhan.



seyhan

12 Ocak 2008 20:42

İlgili Olabilecek Makaleler


Yorumlar (3)





Oguzz
12 Haziran 2009 11:06
Seyhan java bölümünü şaha kaldırdın bir anlamda :) Başarılarının devamını dilerim kardeşim.


elaziz
19 Aralik 2009 13:37
öncelikle tşkrlr bunlar tek bağlı liste mi?


samsat_cs02
12 Mayis 2010 13:50
peki arkadaşlar araya veri nasıl ekleyebiliriz linklist de

Ziyaretçi olarak yorum yazamazsınız. Üye olmak için tıklayın Üye iseniz giriş yapın.



MENÜ » FORUM
Menü » Takip et
RSS Facebook Twitter Friendfeed
Sık Kullanılanlar Google Yahoo Live
Menü » Paylaş
E-Posta ile gönder Twitter Facebook Friendfeed
Buzz Stumbleupon Delicious Digg