<commit_before>---
title: "Linked List"
date: 2017-09-10 23:58 -05:00
category: C 
tags: [c, LinkedList]
---

Linked List’ler yani bağlı listeler, C Programlama Dilinde kullanılan kendine dönüşlü bir yapıdır(struct). “Kendine dönüşlü nasıl oluyo ? ” diyenler için azıcık daha açarsak : Bağlı listeler, içerisinde kendi türünden bir gösterici (pointer) içeren yapılardır diyebiliriz. Yine de kafanızda tam olarak şekillenmediyse endişelenmeyin konunun devamında tam olarak anlaşılacaktır. Gelecek konulara yabancı kalmamak için ‘pointer’ ve ‘struct’ terimlerinin anlamlarının ve işlevlerinin iyi bir şekilde anlaşılması gerekiyor. Eksiği olanlar BURADAKİ yazıyı inceleyebilir. <!--more-->

Bağlı listeler, veri yapıları konusudur ve bir biriyle ilişkili veriler üzerinde işlemler yapılırken kullanılırlar. Birçok kişinin bildiği diziler (arrays) ile benzer özelliklere sahiptir. İkisininde avantaj ve dezavantajları bulunmasına karşın, bağlı listelerin daha üstün özelliklere sahip olduğu açıktır. Bunlardan en önemlisi bağlı listelerin dinamik bir özelliğe sahip olmasıdır. Buradaki dinamikten kastımız; bağlı listeler üzerinde, çalışma sırasında aktif olarak işlemler (ekleme,silme gibi) gerçekleştirebiliriz. Bu işlemleri dizilerde de gerçekleştirmek mümkün ama diziler oluşturulurken en başta belirteceğimiz maksimum dizi boyutu hafızada gereksiz alan işgal etmemize neden olabilir. 
Kısaca bağlı listelerin ne olduğundan bahsettikten sonra, kendine dönüşlü yapıyı pratikte inceleyelim:

```c
struct linked_list{
	int data;
	linked_list *next;
};
```
Görüldüğü gibi ‘node’ adında bir yapımız var ve içerisinde, ‘data’ adında int türünden bir değişken ile kendi türünden bir yapı gösteren ‘next’ adında işaretçi bulunuyor. Bu yapının içerisine ihtiyaca göre farklı veri tiplerinde değişkenler de tanımlayabiliriz. Biz örneklemede basit olması açısından sadece bir adet değişken kullandık. 

Bağlı listeler yukarıda örnek olarak gösterdiğimiz yapılardan meydana gelir. Bu yapılara konu dahilinde ‘node’ yani düğüm adı verilir. Düğümler birbirlerine işaretçiler sayesinde bağlanırlar. Düşünülenin aksine, bağlı listelerde düğümler art arda gelmiyorlar. Hafızada her düğüm farklı yerde bulunur. Her düğüm kendinden sonraki düğümün adresini tutuyor. Yani her düğümde bir veri alanı ve diğer düğümü işaret eden bir işaretçi bulunuyor. Bildiğimiz üzere işaretçi burada adres tutmak amacı ile kullanılıyor. <commit_msg>Update 2017-9-10-linked-list.md<commit_after>---
title: "Linked List"
date: 2017-09-10 23:58 -05:00
category: C 
tags: [c, LinkedList]
---

Linked List’ler yani bağlı listeler, C Programlama Dilinde kullanılan kendine dönüşlü bir yapıdır(struct). “Kendine dönüşlü nasıl oluyo ? ” diyenler için azıcık daha açarsak : Bağlı listeler, içerisinde kendi türünden bir gösterici (pointer) içeren yapılardır diyebiliriz. Yine de kafanızda tam olarak şekillenmediyse endişelenmeyin konunun devamında tam olarak anlaşılacaktır. Gelecek konulara yabancı kalmamak için ‘pointer’ ve ‘struct’ terimlerinin anlamlarının ve işlevlerinin iyi bir şekilde anlaşılması gerekiyor. Eksiği olanlar BURADAKİ yazıyı inceleyebilir. <!--more-->

Bağlı listeler, veri yapıları konusudur ve bir biriyle ilişkili veriler üzerinde işlemler yapılırken kullanılırlar. Birçok kişinin bildiği diziler (arrays) ile benzer özelliklere sahiptir. İkisininde avantaj ve dezavantajları bulunmasına karşın, bağlı listelerin daha üstün özelliklere sahip olduğu açıktır. Bunlardan en önemlisi bağlı listelerin dinamik bir özelliğe sahip olmasıdır. Buradaki dinamikten kastımız; bağlı listeler üzerinde, çalışma sırasında aktif olarak işlemler (ekleme,silme gibi) gerçekleştirebiliriz. Bu işlemleri dizilerde de gerçekleştirmek mümkün ama diziler oluşturulurken en başta belirteceğimiz maksimum dizi boyutu hafızada gereksiz alan işgal etmemize neden olabilir. 
Kısaca bağlı listelerin ne olduğundan bahsettikten sonra, kendine dönüşlü yapıyı pratikte inceleyelim:

```c
struct node{
	int data;
	linked_list *next;
};
```
Görüldüğü gibi ‘node’ adında bir yapımız var ve içerisinde, ‘data’ adında int türünden bir değişken ile kendi türünden bir yapı gösteren ‘next’ adında işaretçi bulunuyor. Bu yapının içerisine ihtiyaca göre farklı veri tiplerinde değişkenler de tanımlayabiliriz. Biz örneklemede basit olması açısından sadece bir adet değişken kullandık. 

Bağlı listeler yukarıda örnek olarak gösterdiğimiz yapılardan meydana gelir. Bu yapılara konu dahilinde ‘node’ yani düğüm adı verilir. Düğümler birbirlerine işaretçiler sayesinde bağlanırlar. Düşünülenin aksine, bağlı listelerde düğümler art arda gelmiyorlar. Hafızada her düğüm farklı yerde bulunur. Her düğüm kendinden sonraki düğümün adresini tutuyor. Yani her düğümde bir veri alanı ve diğer düğümü işaret eden bir işaretçi bulunuyor. Bildiğimiz üzere işaretçi burada adres tutmak amacı ile kullanılıyor. 
{'fraction_non_alphanumeric': 0.042364124819177514, 'fraction_numerical': 0.008059516429014259, 'mean_word_length': 5.924177396280401, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6935970', 'n_tokens_mistral': 2328, 'n_tokens_neox': 2124, 'n_words': 593}