Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Giriş

Kayıt Ol

C Programlama Dili Tek Yönlü Bağlı Liste Silme Fonksiyonu

C programlama dili tek yönlü bağlı liste silme işlemi yapan C programlama dili için fonksiyon kodu.

Evet arkadaşlar bu yazımızda sizlere c programlama dili tek yönlü bağlı liste silme fonksiyonu anlatacağım. Bağlı listede silme işlemi yaparken dikkat etmemiz gereken hususlar vardır. Bunların en önemli olanlarından biri, hatta en önemlisi de listeyi kaybetmemektir. Şöyle açıklamak gerekirse, bağlı listelerimiz bellekte rastgele yerlerde tutulan ve birbirine bağlı düğümlerden oluşuyordu. Bu düğümler arasındaki bağlantıda bir hata yaptığımız anda listemizde büyük kayıplar oluşabiliyordu. Bu nedenle silme işlemi yaparken buna dikkat etmekte fayda var.

  •  Yukarıdaki struct yapısı silme işleminde kullanacağımız struct yapısıdır.
  • liste tipinde 4 tane pointer değişkeni tanımlanır.
  • ilk düğümü tutmak için “ilk”, son düğümü kontrol etmek için “son”, liste üzerinde dolaşmak için “gecici” ve son olarak silinecek elemanı tutmak için “sil” adında pointer değişkenlerimiz var. Bunlara da ilk değer olarak NULL ataması yapılır.

Şimdi ise void olarak tanımlanmış “sil” fonksiyonunu adım adım işleyişini yazalım;

  • İlk olarak fonksiyona kullanıcı tarafından silmek istenilen veri (sayı) gönderilir.
  • Global olarak tanımladığımız iki pointer değişkeni vardı. “gecici” değişkeni listemizde gezinmek için “sil” değişkeni ise listeden istediğimiz düğümü silmek için kullanılacaktır.
  • Alacağımız uyarıyı belirlemek için bir “kontrol” adında bir değişken tanımlanır ve ilk değer olarak sıfır (0) değeri atanır.
  • Listede eleman olup olmadığını kontrol etmek için “ilk” değişkeninin NULL olup olmadığına bakılır. Eğer NULL ise kontrol değişkeni -1 değerini alır.
  • Listede eleman varsa diğer koşullara bakılır. Eğer silmek istediğimiz sayı ilk düğümün sayısı ile eşit ise ikinci if devreye girer.
  • Burada “sil” değişkeni “ilk” değişkenine eşitlenir. Daha sonra “ilk” değişkenine “ilk->sonraki” değeri atanarak bir sonraki düğüme taşınır. Sonrasında free() fonksiyonuna “sil” değişkeni gönderilir ve silmek istenilen eleman silinmiş olur. Bu işlemlerden sonra “kontrol” değişkenine “1” değeri atanır.
  • Aranan eleman ilk düğümde değilse “gecici” değişkenine “ilk” değişken değeri atanır. Listede “gecici” ile dolaşım sağlanır.
  • “gecici” nin bulunduğu düğümden bir sonraki düğümün sayısı, silmek istenilen sayıya eşit mi diye kontrol edilir.
  • Aranan sayı bulunduğunda “sil” değişkenine bu sayının olduğu düğüm atanır. ( gecici->sonraki düğümü )
  • Daha sonra “sil” değişkeni “son” değişkenine eşit mi diye kontrol edilir.
  • Eşitlik varsa “son” değişkenine “gecici” değişkeninin değeri atanır. ( yani bir düğüm geriye götürülür. )
  • Listede bozulma olmaması için de “sil” in bir sonraki düğümü “gecici” nin bir sonraki düğümü olarak atanır.
  • Bu bağlantı sağlandıktan sonra ise free() fonksiyonu ile “sil” değişkeninin içerisi boşaltılır. break komutu ile döngü sona erer.
  • Silme işleminden sonra “kontrol” değişkenine bakılır. Eğer değeri sıfır (0) ise, “silinmek istenilen eleman listede yoktur” uyarısını verir, Eğer  değeri -1 ise “Listede eleman yoktur” uyarısını ekrana verir. Eğer ki değeri 1 ise silme işlemi yapılmıştır ve uyarı olarak o sayının listeden silindiği uyarısını ekrana yazdırır.

Böylece listemizde istediğimiz elemanın silme işlemini gerçekleştirmiş olduk. Tabi şunu da unutmamak lazım bu işlem birçok farklı şekilde yapılabilir ben burada kendi kullandığım şekilde yapmış oldum sizde kendinize hangisi uygun ise o yolu kullanabilirsiniz.

Ayrıca bağlı listede ekleme işlemini yapan c kodunu da buradan bulabilirsiniz.

Hakkında Eyüp Arslan

Leave a reply