Linked List (Linkli Liste veya Bağlı Liste)
Bağlı liste herhangi bir tipten node’ların (düğümlerin) yine kendi tiplerinden düğümlere işaret etmesi (point) ile oluşan zincire verilen isimdir. Buna göre her düğümde kendi tipinden bir pointer olacak ve bu pointerlar ile düğümler birbirine aşağıdaki şekilde bağlanacaktır.

Linked List’in avantajı, hafızayı dinamik olarak kullanmasıdır. Buna göre hafızadan silinen bir bilgi için hafıza alanı boşaltılacak veya yeni eklenen bir bilgi için sadece o bilgiyi tutmaya yetecek kadar hafıza alanı ayrılacaktır.
Yukarıdaki figürde görülen bağlı listeye çok benzeyen ve yine çok kullanılan bir bağlı liste uygulaması da çift bağlı liste (doubly linked list) uygulamasıdır.

Buna göre her düğüm, hem kendinden öncekine hem de kendinden sonrakine bağlanır, bu sayede liste üzerinde ileri ve geri ilerlemek mümkündür.
Bağlı listelerin nesne yönelimli programlama dillerinde pointer tipi bulunmamasından dolayı kodlanması biraz farklıdır. Bilindiği gibi C++ gibi melez (hem C hem de nesne yönelimli programlamayı destekler) diller dışında JAVA, C# gibi dillerde gösterici (pointer) bulunmaz. Bunun yerine nesne göstericisi (object referrer) bulunur. Bu değişken tipleri esas olarak bir sınıf(Class)‘dan türetilmiş bir nesneyi(object) gösterebilen değişkenlerdir. Bu değişkenlerin aslında birer göstericiden farkı yoktur.
Örnek Bağlı liste kodları:
Basit bir bağlı liste örnek kodu 10 adet sayı ekleyerek ekrana basan kod
Basit bir bağlantılı liste örnek kodu NULL kontrolü ile 10 adet sayı ekleyerek ekrana basan kod. Liste boyutu bilinmiyorken liste sonuna kadar gider.
Bir bağlı listede arama yapan kod Arama sonucunda bulunna düğümün işaretcisini döndürür.
Circular (dairesel) Bağlı liste Dairesel bağlı listeye 10 sayı ekleyerek ekrana basar.
Çift Bağlı liste Çift yönlü bağlı listeye 10 sayı ekleyerek listenin ters bağlantısı üzerinden listeyi ters basan kod.
Çift Bağlı Dairesel listeye ekleme ve listeden silme yapan fonksiyon kodları.
« Pointer ( gösterici ) | Abstract Data Type (ADT – Soyut Veri Tipleri) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Linked List (Linkli Liste veya Bağlı Liste)' isimli yazı 03 May 2007 tarihinde, saat: 02:50 'de �adi Evren �EKER tarafından gönderilmiş, toplam 4051 defa okunmuştur.
Benzer yazıları C/C++, Programlama Dilleri, veri yapıları kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
- Evren Kocaturk: ve bunu matlab üzerinde, gerekli...
- Evren Kocaturk: teşekkürler, işime yarayacak gibi,...
- tuncay çavuşoğlu: Şadi bey teşekkürler.Kısa ve...
- attila: hocam bunun bir örneginide Visual Basic diliyle...
Yakın Yazılar
Filitreleme Tipi Fonksiyonlar (Filter Type Functions)
Linked List (Linkli Liste veya Bağlı Liste)
Harici Sıralama (External Sort)
Bindirme Tipi Fonksiyonlar (Mapping Style Functions)
Abstract Data Type (ADT - Soyut Veri Tipleri)
Oluşum (Composition) ve Struct (yapılar)
Listenin Elemanlarının Değerini 1 Arttıran Kod
Biriktirme Tipi Fonksiyonlar ( Accumulator Type Functions)
Derinlik Hafızalama (Depth Buffering , z-buffer)
Komşuluk Listesi (Adjacency List)
Ekranda verilen poligonu tekrarlayan kod
Kenar Sıralama Çarprazlaması (Edge Recombination Crossover, ERX)
Bağlantılar
[...] detayları ile ilgili bilgisinin olmasını gerektirmemesidir. Örnek soyut veri tipleri olarak bağlı liste , stack , queue , kompleks sayılar , kümeler [...]
[...] liste üzerinden verilerin nasıl eklenip çıkarıldığı tasvir edilmiştir. Bir sıra için bağlı liste kullanılabileceği gibi dizi (Array) de kullanılabilir. Ayrıca yukarıdaki bağlı listede, [...]
hocam merhabalar,
while(temp->next!=(node*)0),Arama kodunda bulunan kodun bu parcasinda,dongunun parametresi olarak bu sekil yazilmasinin,
while(temp->next!=NULL) bu sekilde yazilmasindan islevsel olarak farki varmidir?
Null, NULL, nil veya null olarak yazılan sabit değer, her dilde tanımlı değildir. Bu yüzden kodda bulunan
(node *) 0
ifadesi, sayısal değer olarak 0 tam sayısını node * göstericisine tip inkılabı yapmakta (type casting) ve bu şekilde kullanmaktadır. Yukarıdaki bu tanım, her dilde (null değeri her nasıl tanımlıysa veya hiç tanımlı değilse bile) çalışması için yapılan ufak bir hiledir.