Yukarıdaki kod yapısına baktığımızda node isminde bir struct yapısı oluşturmuş olduğumuzu görüyoruz. Struct bildiğiniz üzere içerisinde çeşitli değerler tutabildiğimi bir yapıdır. Hatta Nesne Yönelimli Programlama konusundaki Class mantığının temelini oluşturur. Bir nesneye dair bilgileri tuttuğumuzu düşünebilirsiniz. Tabii ki buradaki nesnemiz düğüm yani node.
Peki kodumuzda ne yaptık?
int data değişkeniyle düğümümüzde sayısal değerleri tutacağımızı belirttik. Burası kolay, peki struct node
*next değişkeni ne yapıyor? Fark ettiyseniz *next isminde bir pointer oluşturduk. Bu pointer kendisinden sonra gelecek olan düğümü işaret eder. Çünkü pointer bir göstericidir, adres saklar. Sakladığı adres de kendisinden sonra gelecek düğümün adresi olacak.
Şimdi
Main fonksiyonumuza gelelim ve 3 tane düğüm oluşturalım.
struct node* baslangic = NULL;
struct node* ikinci = NULL;
struct node* ucuncu = NULL;
struct node* dugum_ismi ifadesi dugum_ismi adında bir node oluşturur. biz main fonksiyonu içerisinde baslangic, ikinci ve ucuncu olmak üzere üçtane düğüm oluşturduk ve bunlara başlangıç değeri olarak NULL değeri atadık.
Şimdi Linked List konusunun esas kritik konusuna geliyoruz. Oluşturduğumuz düğümler için hafıza alanı atamalıyız. Bunu bir önceki yazımızda Malloc fonksiyonuyla halledebileceğimizi söylemiştik. (<stdlib.h> kütüphanesini eklemeyi unutmayın!)
baslangic = (struct node*)malloc(sizeof(struct node));
ikinci = (struct node*)malloc(sizeof(struct node));
ucuncu = (struct node*)malloc(sizeof(struct node));
Yukarıdaki üç satırda da üç düğüm için belli bir alan oluşturduk. Artık oluşturulan bu alanları kullanabileceğiz. Peki kullanıp da ne yapacağız? E hadi bir de değerleri ekleyelim :)
baslangic->data=1;
baslangic->next=ikinci;
ikinci->data=2;
ikinci->next=ucuncu;
ucuncu->data = 3;
ucuncu->next = NULL;
Burada gördüğünüz şey, struct yapısının kullanılmasından başka bir şey değil. Linked List ile alakalı olan nokta, dugum->next değerinin bir sonraki düğümü işaret ediyor olması.
baslangic->next = second; ikinci->next = third; ucuncu->next = NULL
Neden ucuncu->next=NULL derseniz, çünkü oluşturduğumuz yapı
tek yönlü bağlı liste yapısıdır. Singly Double List'de son düğümün NEXT değeri her zaman NULL'dür.
Mutlaka Oku!
Bağlı Listeye Eleman Ekleme
Bağlı Listeden Eleman Silme