Doğrusal Listeler: Ekleme, Silme ve Ekrana Yazdırma
Giriş
Doğrusal listeler, verileri sıralı bir şekilde depolayan temel bir veri yapısıdır. Her öğe, bir sonraki öğeye işaret eden bir bağlantı içerir ve bu da liste boyunca ilerlemeyi sağlar. Doğrusal listeler, çeşitli uygulamalarda kullanılır, örneğin:
- Alışveriş listeleri
- Görev listeleri
- Veri kuyrukları
- Yığınlar
Bu makalede, C programlama dilinde doğrusal listelerin nasıl oluşturulacağını, öğe ekleme ve silme işlemlerinin nasıl gerçekleştirileceğini ve listenin içeriğinin nasıl ekrana yazdırılacağını inceleyeceğiz.
Doğrusal Liste Yapısı
C’de bir doğrusal liste, aşağıdaki yapıyı kullanarak tanımlanır:
c
struct node {
int data;
struct node *next;
};
data
öğenin değerini depolar.next
bir sonraki öğeye işaret eden bir bağlantıdır.
Liste Oluşturma
Bir doğrusal liste oluşturmak için aşağıdaki adımları izleyin:
- Başlangıçta liste boştur, bu nedenle
head
vetail
işaretçileriNULL
‘a ayarlanır. - Yeni bir düğüm oluşturun ve
data
alanına bir değer atayın. - Yeni düğümü listenin sonuna ekleyin.
Öğe Ekleme
Listeye bir öğe eklemek için aşağıdaki adımları izleyin:
- Yeni bir düğüm oluşturun ve
data
alanına bir değer atayın. - Listenin boş olup olmadığını kontrol edin.
- Boşsa, yeni düğüm hem
head
hem detail
işaretçilerine atanır. - Boş değilse, yeni düğüm
tail
işaretçisinin işaret ettiği düğümünnext
alanına atanır vetail
işaretçisi yeni düğüme ayarlanır.
Öğe Silme
Listeden bir öğe silmek için aşağıdaki adımları izleyin:
- Silinecek öğeyi içeren düğümü bulun.
- Önceki düğümün
next
alanını, silinecek düğümünnext
alanına ayarlayın. - Silinecek düğümü serbest bırakın.
Listeyi Ekrana Yazdırma
Listenin içeriğini ekrana yazdırmak için aşağıdaki adımları izleyin:
head
işaretçisinden başlayarak liste boyunca yineleyin.- Her düğümün
data
alanını ekrana yazdırın.
Örnek Kod
Aşağıdaki C kodu, doğrusal bir liste oluşturma, öğe ekleme, silme ve listeyi ekrana yazdırma işlemlerini göstermektedir:
“`c
include
include
struct node {
int data;
struct node *next;
};
struct node head = NULL;
struct node tail = NULL;
void insert(int data) {
struct node new_node = (struct node )malloc(sizeof(struct node));
new_node->data = data;
new_node->next = NULL;
if (head == NULL) {
head = new_node;
tail = new_node;
} else {
tail->next = new_node;
tail = new_node;
}
}
void delete(int data) {
struct node current = head;
struct node previous = NULL;
while (current != NULL) {
if (current->data == data) {
if (previous == NULL) {
head = current->next;
} else {
previous->next = current->next;
}
free(current);
break;
}
previous = current;
current = current->next;
}
}
void print() {
struct node *current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
insert(10);
insert(20);
insert(30);
insert(40);
print(); // 10 20 30 40
delete(20);
print(); // 10 30 40
return 0;
}
“`
Faydalı Kaynaklar
- Doğrusal Listeler Hakkında Daha Fazla Bilgi
- C’de Doğrusal Listeler
- Doğrusal Listeler Üzerine Uygulamalı Bir Kılavuz