Diziler Arasında Bağlantılı Listeler Arasındaki Fark

Anonim

Diziler ve Bağlı Listeler

için yöntemler sunar. Diziler, öğelerin koleksiyonunu depolamak için en sık kullanılan veri yapılarıdır. Çoğu programlama dili, dizileri kolayca tanıyan ve dizilerdeki öğelere erişmek için yöntemler sunar. Bağlantılı liste, daha doğrusu tekli bağlantılı liste, öğelerin koleksiyonunu depolamak için kullanılabilen bir veri yapısıdır. Bir dizi düğümden oluşur ve her düğüm sıradaki bir sonraki düğüme referans alır.

Şekil 1'de gösterilen, genellikle bir diziye değer atayan ve atayan bir kod parçasıdır. Şekil 2, bir dizinin belleğe nasıl benzeyeceğini göstermektedir.

Yukarıdaki kod, 5 tam sayı depolayabilen ve 0 ila 4 arasındaki dizinleri kullanarak erişilen bir diziyi tanımlar. Bir dizinin önemli bir özelliği, tüm dizinin tek bir bellek bloğu olarak ayrıldığı ve her öğenin kendi alanına sahip olduğudır. dizi. Bir dizi tanımlandıktan sonra, boyutu sabittir. Dizi zamanında derleme boyutundan emin değilseniz, güvenli tarafta olabilmesi için yeterince büyük bir dizi tanımlamanız gerekir. Fakat, çoğu zaman, tahsis ettiğimizden çok daha az sayıda eleman kullanacağız. Dolayısıyla hatırı sayılır miktarda bellek aslında harcanmaktadır. Öte yandan, "yeterince büyük dizi" aslında yeterince büyük değilse, program çöker demektir.

Bağlı bir liste elemanlarına kendi bellek bloklarında ayrı ayrı bellek tahsis eder ve genel yapı bu elemanları bir zincirde bağlantılar olarak birleştirerek elde edilir. Bağlantılı bir listedeki her öğe, Şekil 3'te gösterildiği gibi iki alana sahiptir. Veri alanı saklanan gerçek verileri tutar ve bir sonraki alan zincirdeki bir sonraki öğeye referans tutar. Bağlı listenin ilk öğesi bağlantılı liste başlığı olarak saklanır.

Şekil 3: Bağlantılı Bir Listenin Elemanı
Şekil 4, üç unsurlu bir bağlantılı listeyi göstermektedir. Her bir öğe verileri depolar ve sonuncusu hariç tüm öğeler bir sonraki öğeye yapılan bir referansı depolar. Son öğe bir sonraki alana boş bir değer tutar. Listedeki herhangi bir öğeye, baştan başlayarak ve gerekli öğeyi karşılayana kadar sonraki işaretçiyi takip ederek erişebilirsiniz. Diziler ve bağlantılı listeler, her ikisinin de öğelerin koleksiyonunu depolamak için kullanıldığı anlamda benzer olsa da, belleğe bellek ayırmak için kullandıkları stratejiler nedeniyle farklılıklara neden olurlar. Diziler, belleği tüm öğelerine tek bir blok olarak ayırır ve dizinin boyutu çalışma zamanında belirlenmelidir. Bu, dizilerin derleme zamanında boyutunu bilmediğiniz durumlarda dizileri verimsiz hale getirecektir. Bağlı liste, belleklerini öğelerine ayrı ayrı ayırdığından, derleme zamanında listenin boyutunu bilmediğiniz durumlarda çok daha verimli olur.Bağlı listede bulunan bildirimlere erişme ve bunlara erişme, bir dizideki öğelere kendi dizinlerini kullanarak doğrudan nasıl eriştiğinizle karşılaştırıldığında düz değildir.