Linked List Nedir

Linked list (bağlantılı liste) nedir ve neden kullanılma ihtiyacı doğmuştur.Bunu açıklamaya çalışacağım.

Linked list,doğrusal olarak verilerin tutulduğu koleksiyon(collection) yapısı diyebiliriz.Her node kendinden sonraki node un bağlantısını tutar.C dilinde pointer yardımıyla C# gibi object-oriented dillerde bunu nesnenin referansı sayesinde birbirleriyle ilişkilendirebiliriz.

Bu yapı node ların doğrusal olarak(ardışık) sıralanmış halini sunar.Aşağıda gösterimsel olarak basit halini görebiliriz.

Begin 78*->89*->34*->85 End

Linked list in array tanımlamaya göre birinci temel yararı,veriler kolayca eklenebilir ve çıkartılabilir bellekten yeniden yer tahsis etmeden ve düzenleme yapmadan,çünkü verilerin bitişik olarak memory de tutulmasına gerek yoktur.Array ise kod tarafında kaç elemanlı olacağı compile time ve run time dan önce tanımlanmalıdır.

Array ın bellekten yer tahsis etmesine örnek vermek gerekirse,basit şekilde aşağıdaki gibi gösterebiliriz.

array-memory-allocates

Şimdi arraya 4. bir veri eklemeye çalıştığımızda nasıl olacağını inceleyelim.En son elementimiz olan 3. element ten sonra memory baktığımızda karşımıza belleğin başka bir uygulama tarafından kullanıldığını göreceğiz.

Bunu arkadaşlarınızla sinemaya gittiğinizde 3 kişi olan ekibinize,4. arkadaşınızın sonradan geleceğini bildirdiğinde ki duruma benzetebiliriz.Hepiniz aynı sırada oturup flim izlemek istiyorsu-nuz ama ortada bir sorun var,sizin sıranızdaki yer dolu bu durumda,görevliye aynı sırada boş olan 4 lü koltuk var mı diye sorarsınız ve eğer varsa bu sıraya biletlerinizi aktararak bu durumu çözebilir-siniz.Bu çok sıkıntılı bir süreç olduğu aşikar peki bu durumu nasıl çözebilirsiniz.Herhangi bir durum olasılığına karşı,4. arkadaşınızın sonradan gelmesi gibi,ekstradan aynı sıradan bilet alıp bu durumu garantilemek isteyebilirsiniz.Bu durum aldığınız ek biletlere karşı kimsenin gelmemesi durumunda,ek olarak fazladan para vermiş olacaksınız.

Yukarıdaki durumu belleğe göre uyarlarsak,ihtiyacınızdan fazla bellekte yer tahsis etmiş olacaksınız ve belleği i kötü kullanmış olacaksınız.Ve sadece sizin uygulamanızı değil,bilgisayarda çalışan diğer uygulamaların performansını da düşürecektir.Çünkü bellekten boş yere yer işgal edip,diğer tanımlanmış array ların de bellek üzerinde sıralı olarak yer bakmasına neden olacaktır.

Yukarıda anlattığımız durumu çözmek için linked list kullanabiliriz.Aşağıdaki görsel üzerinden giderek linked list in bellek üzerinde nasıl ilerlediğini görebiliriz.

linked-list-memory-allocates

Linked list ile eklediğimiz veriler belleğin herhangi bir yerinde olabilir.Her element bir sonraki element in referansını tutar.

Linked list ile verilerizi taşıma ihtiyacımız kalmaz bu sayede,Yukarıda array için vermiş olduğum örnek üzerinden gidersek,3 kişi sinema biletlerinizi aldınız ve daha sonradan başka arkadaşlarınız da size katılmak istedi.Fakat sizin sıranızda diğer koltuklar satın alınmış,diğer sıralarda başka yerler var ve arkadaşlarınıza durumu anlatarak diğer sıralardan biletlerini almış olursunuz.Önemli olan birliktelik mesajını vermiş olursunuz :))

Linked list için konuşmuş olursak,eğer bellekte boş yer varsa,linked list içinde boş yeriniz var demektir.

3 thoughts on “Linked List Nedir

  1. ÖZNUR KARABURUN says:

    Merhaba,
    Bu bağlı liste kavramını, c# da console değilde form application da yapmak istediğimde nasıl yapacağim?
    Şöyle ki bir projem var bağlı liste ile oluşturulan bi application.Ancak bütün bağlı listeler console da yapılıyor.
    Yardımcı olabilirmisiniz?

    • engin says:

      Merhaba,

      Aslında sorunun kaynağını şöyle açsak belki daha faydalı olur. Windows form ve Console application un farkı nedir? Form application , console application dan farklı olarak kullanıcıya görsel arayüz sunar. Form application da nasıl bir uygulama yapmak istiyorsun detayları bilmiyorum ama örnek verecek olursak. Form application unda bir button olsun
      ve click eventinde Linked List ile ilgili kodlarını yazmak istersen, console applicationdan bir farkı kalmıyor 🙂

      private void button1_Click(object sender, EventArgs e)
      {

      }

  2. […] mülakat sırasında sorulan soruya karşılık bu yazı veya kod parçacığını yazmak istedim. Linked List Nedir başlıklı yazımı 2016 yılında yazmışım. Dolayısıyla çok fazla tanıma vs […]

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.