
Geçen gün farketmemişim, glib kütüphanesinde tek bağlı liste de bulunuyormuş. Onu da anlatmadan geçmenin pek mantıklı olmayacağını düşündüm, ancak çift bağlı liste ile çoğunlukla aynı özellikleri taşıdığı için örnek bir proje yapıp olayı onun üstünden anlatmak daha mantıklı olacaktır.
Önceki makaleyi okumayanların, http://www.huseyinalb.com/glib/ adresinden okumalarını tavsiye ediyorum. Orada anlatılan bir çok şeyi burada atlayacağımdan emin olabilirsiniz
Öncelikle GSList, yani tek bağlı listenin struct‘ına bakalım.
typedef struct {
gpointer data;
GSList *next;
} GSList;
Görüleceği üzere, çift bağlı listeden tek farkı kendisinden önceki elemana atıf vermemesi.
Örnek projemiz, bir dosyadan alınan yazıda bulunan kelimeleri sayıp, miktarlarına göre sıralamak. Öncelikle, önceki anlatımdan bunun önemli bir farkını belirtmekte yarar var. Bu sefer glib’de bulunan hazır fonksiyonlardan tamamıyla faydalanmamız pek mümkün değil, çünkü kendi tanımladığımız bir struct’ı kullanmak zorundayız.
typedef struct
{
char * kelime;
int miktar;
} kelimeTip;
Bu struct’ta kelimeler ve bu kelimelerden kaç tane bulunduğu saklanacak. Okuduğumuz yazıdan her gelen kelime, listede aranacak, eğer zaten varsa listedeki kelimenin miktarı arttırılacak, eğer yoksa listeye eklenecek. Bunun için gereken fonksiyonların prototiplerini yazmak gerekirse;
Continue Reading »
Bu yazı toplamda 4873, bugün ise 1 kez görüntülenmiş
