Loading AI tools
bilgisayarda veri depolamanın ve düzenlemenin belirli bir yolu Vikipedi'den, özgür ansiklopediden
Veri yapısı, bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapı.[1]
Veri yapıları, verilerin düzenlenme biçimini belirleyen yapıtaşlarıdır. Bir yazılım değişkeni bile basit bir veri yapısı olarak kabul edilebilir. Değişik algoritmalarda verilerin diziler, listeler, yığıtlar, kuyruklar, ağaçlar ve çizgeler gibi veri modellerine uydurularak düzenlenmesi gerekebilir. Veri, yapı ve algoritma bir yazılımın birbirinden ayrılmaz bileşenleridir. Algoritması hazırlanmış her yapı için verilerin düzenli bir şekilde kullanımı önemlidir. Çünkü yapı iyi kurulduğunda, etkin, doğru, anlaşılır ve hızlı çalışıp az kaynak kullanan algoritma geliştirmek kolaylaşır.
Bilgisayar biliminde veri yapısı, genellikle verilere verimli erişim için seçilen bir veri organizasyonu ve depolama biçimidir. Daha doğrusu veri yapısı, veri değerlerinin, bunlar arasındaki ilişkilerin ve verilere uygulanabilecek işlevlerin veya işlemlerin bir koleksiyonudur; yani verilere ilişkin cebirsel bir yapıdır.
Veri yapıları soyut veri türlerinin (ADT (abstract data types)) temelini oluşturur. ADT, veri tipinin mantıksal formunu tanımlar. Veri yapısı veri tipinin fiziksel formunu uygular.
Farklı türdeki veri yapıları, farklı türdeki uygulamalara uygundur ve bazıları belirli görevlere oldukça uzmanlaşmıştır. Örneğin, ilişkisel veritabanları genellikle veri alımı için B-ağacı dizinlerini kullanırken, derleyici uygulamaları genellikle tanımlayıcıları aramak için karma tabloları kullanır.
Veri yapıları, büyük veritabanları ve internet indeksleme hizmetleri gibi kullanımlar için büyük miktarlardaki verileri verimli bir şekilde yönetmeye yönelik bir araç sağlar. Genellikle verimli veri yapıları, verimli algoritmalar tasarlamanın anahtarıdır. Bazı resmi tasarım yöntemleri ve programlama dilleri, yazılım tasarımında anahtar düzenleme faktörü olarak algoritmalardan ziyade veri yapılarını vurgular. Veri yapıları, hem ana bellekte hem de ikincil bellekte saklanan bilgilerin depolanmasını ve alınmasını düzenlemek için kullanılabilir.
Veri yapıları, çeşitli programlama dilleri ve teknikleri kullanılarak uygulanabilir, ancak hepsi, verileri verimli bir şekilde organize etmek ve depolamak gibi ortak bir hedefi paylaşır. Veri yapıları genellikle bir bilgisayarın, kendisi de bellekte saklanabilen ve program tarafından değiştirilebilen, bir bellek adresini temsil eden bir bit dizisi olan bir işaretçi tarafından belirtilen, belleğindeki herhangi bir yere veri getirme ve saklama becerisine dayanır. Dolayısıyla dizi ve kayıt veri yapıları, veri öğelerinin adreslerinin aritmetik işlemlerle hesaplanmasına dayanırken, bağlantılı veri yapıları, veri öğelerinin adreslerinin yapının kendisi içinde saklanmasına dayanır. Veri yapılandırmasına yönelik bu yaklaşımın, algoritmaların verimliliği ve ölçeklenebilirliği üzerinde derin etkileri vardır. Örneğin, dizilerdeki bitişik bellek tahsisi, hızlı erişim ve değişiklik işlemlerini kolaylaştırarak sıralı veri işleme senaryolarında performansın optimize edilmesini sağlar.
Bir veri yapısının uygulanması genellikle o yapının örneklerini yaratan ve işleyen bir dizi prosedür yazmayı gerektirir. Bir veri yapısının verimliliği bu işlemlerden ayrı olarak analiz edilemez. Bu gözlem, soyut bir veri türü, üzerinde gerçekleştirilebilecek işlemlerle dolaylı olarak tanımlanan bir veri yapısı ve bu işlemlerin matematiksel özellikleri (yer ve zaman maliyetleri dahil) şeklindeki teorik kavramı motive eder.
Genellikle daha basit ilkel veri türleri üzerine inşa edilen çok sayıda veri yapısı türü vardır. İyi bilinen örnekler şunlardır:
Çoğu assembly dili ve BCPL (Basic Combined Programming Language, Temel Birleştirilmiş Programlama Dili) gibi bazı düşük seviyeli diller, veri yapıları için yerleşik destekten yoksundur. Öte yandan, birçok üst düzey programlama dili ve MASM gibi bazı üst düzey assembly dilleri, kayıtlar ve diziler gibi belirli veri yapıları için özel sözdizimine veya diğer yerleşik desteğe sahiptir. Örneğin, C (BCPL'nin doğrudan soyundan gelen) ve Pascal dilleri, vektörlere (tek boyutlu diziler) ve çok boyutlu dizilere ek olarak sırasıyla yapıları ve kayıtları destekler.
Çoğu programlama dili, veri yapısı uygulamalarının farklı programlar tarafından yeniden kullanılmasına izin veren bir tür kütüphane mekanizmasına sahiptir. Modern diller genellikle en yaygın veri yapılarını gerçekleyen standart kütüphanelerle birlikte gelir. Örnekler C++ Standart Şablon Kitaplığı, Java Koleksiyon Çerçevesi ve Microsoft .NET Çerçevesidir.
Modern diller ayrıca genellikle modüler programlamayı, yani bir kütüphane modülünün arayüzü ile bunun uygulanması arasındaki ayrımı destekler. Bazıları, istemcilerin uygulama ayrıntılarını gizlemesine olanak tanıyan opak veri türleri sağlar. C++, Java ve Smalltalk gibi nesne yönelimli programlama dilleri genellikle bu amaç için sınıfları kullanır.
Bilinen birçok veri yapısının, birden fazla bilgi işlem iş parçacığının bir veri yapısının tek bir somut örneğine aynı anda erişmesine izin veren eşzamanlı versiyonları vardır.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.