Home / Veri Yapıları / Bağlı Liste (Linked List) – Aradan Eleman Silme

Bağlı Liste (Linked List) – Aradan Eleman Silme

Bağlı Listelerde Aradan eleman silme işlemi sondan ve baştan eleman silme işlemi gerçekleşmediğinde yapılan tüm silme işlemlerinde geçerlidir. Aradan eleman silme işleminde kullanıcı bir değer girer ve liste taranarak silme işlemi gerçekleştirilir. Ancak biz dizilerdeki gibi direkt silme işlemi gerçekleştiremeyiz. Çünkü Bağlı listelerde tüm elemanlar birbirleri ile ilişkilidir. Eğer ilişkiyi bozarsak listemiz de bozulur. Şimdi aşağıya bir bakalım.

22 => 33 => 44 => 55 => 66 => 77

Yukarıdaki bağlı listeden 55 sayısını silmek istediğimizde aşağıdaki durum oluşur.

22 => 33 => 44 => 66 => 77

Bunu yazmak çok basit gibi öyle değil mi? dikkatlice bakarsanız silmek istediğimiz sayının bir öncesindeki sayı olan 44’ün, bir sonrasındaki sayı olan 66’yı işaret ettiğini görürsünüz. Yani mesele yalnızca 55 sayısını silmek değildir, 44 sayısının 55’i değil, 66’yı next değeri olarak göstermesini sağlamaktır.

O halde bizim traverse yaparken bulmamız gereken sayı 55 değil, 44’tür. yani statementımız temp->next != 55 olmalıdır. Böylece temp değeri 44 haline gelecektir.

44 sayısını temp’e atadıktan sonra işimiz kolay. temp->next silinecek olan sayi, temp->next->next ise bizim yeni “sonraki sayımızdır.

Yani

struct node* silinecek = temp->next (55)

struct node* yeniNext = temp->next->next (66)

dersek ve biz,

free(silinecek)

temp->next = yeni->next

dersek işi bitirmiş oluruz. Aşağıda tam koda ulaşabilirsiniz.

Bağlı Liste Aradan Eleman Silme İşlemi C Kodu

[CPP]

void deleteSpes(int t)
{
if(start->data == t)
{
deleteFirst();
}
else
{
temp = start;
while(temp->next->data != t)
{
temp = temp->next;
}
struct node*temp1 = temp->next->next;
struct node* temp2 = temp;
free(temp->next);
temp2->next = temp1;
}

}

[/CPP]

Bağlı Liste Aradan Eleman Silme Video

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir