Bağlı Listeden Eleman Silmek - (Linked List Eleman Silme İşlemi)

bağlı liste eleman silme
Bağlı Listeden Eleman Silme
Bağlı Liste Eleman Silme işlemi, mantık olarak göstericileri maniple etmekten geçer. Fiziksel silme işlemleri ise free(dugum) şeklinde oluşturulur. Free komutunu çalıştırmasanız bile, göstericileri maniple ederek bağlı liste üzerinden eleman silme eylemini gerçekleştirebilirsiniz.

Eleman silme işlemi, Bağlı Liste Eleman Ekleme İşlemleri konusuna benzer. 3 ana unsur vardır.

Bağlı Liste Sondan Eleman Silme İşlemi

Sondaki elemanı bağlı listeden çıkarmak istiyorsak, sondan bir önceki düğümü bulmalıyız. Mantık olarak bunu yapabilmemizin tek yolu Linked List Traverse işlemidir. Traverse demek dolaşmak demektir. Bu linked list'e özgü değildir. Graflarda da, ağaç yapılarında da kullanılır. Ancak biz traverse işlemiyle sondaki elemanı bulmayı biliyoruz. Sondan bir önceki elemanı bulmak, Bağlı Liste Eleman Silme mantığının ana hedefidir. 

Linked List üzerinde Sondan bir Önceki Düğümü Bulmak

Bunun iki şekli vardır, birincisi startdegeri->next->data != verilendeger ifadesini while döngüsüne almaltır. Yani aşağıdaki gibi uygulama yaparsak;

while(startdegeri->next->data!=verilendeger)
          startdegeri = startdegeri->next;

yukarıdaki döngü sonucunda sondan bir önceki düğüm, startdegeri değişkenine aktarılmış olur.

diğer yöntem ise normal traverse işlemi yapmaktır. Ama tabii ufak bir değişiklikle;

while(startdeger->data!=verilendeger)
{
          t=startdegeri;
          startdegeri = startdegeri->next;
}

yukarıdaki döngüde t değeri döngü sonucunda sondan bir önceki düğüm haline gelir.

Linked List Sondan Eleman Silme Nasıl Yapılır? Mutlaka Okuyun...

Bağlı Liste Baştan Eleman Silme İşlemi

Bağlı Listelerde baştan eleman silmek demek, ikinci sıradaki düğümün ilk sırada olması demektir. Temel algoritması budur. Bunun da en iyi yolu, bir tane düğüm oluşturmak, bu düğüme de start->next değerini atamaktır. Böylece ikinci düğümü elimizde tutmuş oluruz. Yani;

ikincidugum = start->next;

bu uygulamayı yaptıktan sonra start=ikincidugum yaptığımızda iş biter. 

Linked List Baştan Eleman Silme Nasıl Yapılır? Mutlaka Okuyun...

Bağlı Liste Verilen Elemanı Silme İşlemi

Bunu Linked List Aradan Eleman Silme işlemi şeklinde de işleyebiliriz. Ancak arada ufak bir fark var. Verilen Elemanı silmek bir kontrol sürecine tabiidir. bunu şu şekilde kontrol etmek mümkün.

if(start->data==verilen)
       bastanElemanSil();
while(starticin->next->data!= NULL)
       starticin = starticin->next;
if(starticin->next->data == verilen
      sondanElemanSil();

yukarıdaki kontrolleri uygularsanız, verilen eleman eğer baştaki değere eşitse baştan sil fonksiyonunu çalıştırur. Eğer verilen eleman sondaki değere eşitse o zaman sondaki düğümü silen fonksiyon çalıştırılır.

Peki verilen değer sondan ve ortadan değil de aradaki bir değerse silinme işlemi ne olur? Tabii ki yine traverse yapıp, sondan bir önceki düğümü bulacağız. Bir önceki düğümü, bir sonrakine atayacağız. Bunun için bir de sonraki düğümü elimizde tutan bir düğüm gerekecek. Önceki düğümün göstericisini sonraki düğüme atayacağız. Çok mu karışık geldi? Hemen aşağıdali linke bakın!

Linked List Aradan Eleman Silme C Kodu... Mutlaka Okuyun!

Etiketler: , , ,