introduction data structures c
C ++ 'da Veri Yapıları Üzerine Giriş Eğitimi.
'Veri yapısı, bir programın verilere verimli ve hızlı bir şekilde erişmesine yardımcı olan ve böylece tüm programın verimli bir şekilde çalışabilmesini sağlayan organize bir veri koleksiyonu olarak tanımlanabilir. '
Programlama dünyasında verinin merkez olduğunu ve her şeyin veri etrafında döndüğünü biliyoruz. Verileri verimli bir şekilde depolama, arama, sıralama, düzenleme ve erişme dahil tüm veri işlemlerini yapmalıyız ve ancak o zaman programımız başarılı olabilir.
=> Tam C ++ Öğreticiler listesini Keşfetmek İçin Buraya Bakın.
Ne öğreneceksin:
- Genel Bakış
- Programlamada Veri Yapısı İhtiyacı
- Veri Yapısı Sınıflandırması
- Veri Yapısına İlişkin İşlemler
- Veri Yapısının Avantajları
- Sonuç
- Önerilen Kaynaklar
Genel Bakış
Dinamik çözümler oluşturmamıza yardımcı olabilecek verileri depolamanın en verimli yolunu bulmamız gerekiyor. Veri yapısı, bu tür çözümleri oluşturmamıza yardımcı olur.
Verileri yapılar halinde düzenlerken veya düzenlerken, düzenlemenin neredeyse gerçek bir nesneyi temsil etmesini sağlamamız gerekir. İkincisi, bu düzenleme yeterince basit olmalıdır, böylece herkes kolayca erişebilir ve gerektiğinde işleyebilir.
Bu dizide hem temel hem de gelişmiş bir veri yapısı hakkında ayrıntılı bilgi edineceğiz. Veri yapıları üzerinde gerçekleştirilebilecek çeşitli arama ve sıralama tekniklerini de ayrıntılı olarak öğreneceğiz.
Bu eğitim dizisini öğrendikten sonra, okuyucu her veri yapısı ve programlaması hakkında bilgi sahibi olmalıdır.
Veri yapıları ile uğraşırken kullandığımız bazı terimlerin üzerinden geçelim:
Örneğin,belirli bir öğrenciyi alın. Bir öğrenci aşağıdaki ayrıntıları resimsel olarak temsil edilen şekilde alabilir.
- Veri: Temel değerdir. Yukarıdaki şekilde öğrenci Rulo No. veri olabilir.
- Grup öğesi: Bu, birden fazla alt öğesi olan veri öğesidir. Yukarıdaki şekilde Öğrenci_adı Adına ve Soyadına sahiptir.
- Kayıt: Veri öğelerinden oluşan bir koleksiyondur. Yukarıdaki örnekte, öğrenci Listesi No., Adı, Sınıfı, Yaşı, Sınıfı vb. Gibi veri öğeleri birlikte bir kayıt oluşturur.
- Varlık: Bir kayıt sınıfıdır. Yukarıdaki diyagramda öğrenci bir varlıktır.
- Öznitelik veya alan: Bir varlığın özelliklerine nitelikler denir ve her alan bir niteliği temsil eder.
- Dosya: Dosya, kayıtların bir koleksiyonudur. Yukarıdaki örnekte, bir öğrenci varlığının binlerce kaydı olabilir. Böylece bir dosya tüm bu kayıtları içerecektir.
Okuyucu, çeşitli veri yapılarını kullanırken ara sıra kullandığımız için tüm bu terimlerin farkında olmalıdır.
Veri yapıları programın ana yapı taşıdır ve programcılar olarak hangi veri yapısının kullanılacağına dikkat etmeliyiz. Kullanılacak kesin veri yapısı, programlama söz konusu olduğunda verilmesi gereken en zor karardır.
Programlamada veri yapısı ihtiyacını tartışalım.
Programlamada Veri Yapısı İhtiyacı
Veri miktarı artmaya devam ettikçe, uygulamalar gittikçe daha karmaşık hale gelir, dolayısıyla programcının bu verileri ve yazılımı yönetmesi zorlaşır.
Tipik olarak, herhangi bir zamanda, uygulama aşağıdaki engellerle karşılaşabilir:
# 1) Büyük Miktarlarda Veriyi Arama: İşlenen ve depolanan büyük miktarda veriyle, herhangi bir zamanda programımızın belirli bir veriyi araştırması gerekebilir. Veriler çok büyükse ve uygun şekilde düzenlenmemişse, gerekli verileri elde etmek çok zaman alacaktır.
Verileri depolamak ve düzenlemek için veri yapılarını kullandığımızda, verilerin alınması daha hızlı ve daha kolay hale gelir.
# 2) İşleme Hızı: Düzensiz veriler, verilerin alınması ve erişilmesi için çok fazla zaman harcanacağından, yavaş işlem hızına neden olabilir.
Verileri depolarken bir veri yapısında düzgün organize edersek, her seferinde geri alma, düzenleme gibi faaliyetlerde zaman kaybetmeyeceğiz. Bunun yerine, istenen çıktıyı üretmek için verilerin işlenmesine konsantre olabiliriz.
# 3) Birden Fazla Eşzamanlı Talep: Günümüzde birçok uygulamanın eşzamanlı olarak veri talebinde bulunması gerekiyor. Uygulamaların sorunsuz çalışması için bu taleplerin verimli bir şekilde işlenmesi gerekir.
Verilerimiz rastgele bir şekilde depolanırsa, eşzamanlı olarak tüm istekleri işleyemeyeceğiz. Bu nedenle, eşzamanlı taleplerin geri dönüş süresini en aza indirmek için verileri uygun bir veri yapısında düzenlemek akıllıca bir karardır.
Veri Yapısı Sınıflandırması
C ++ 'da kullanılan veri yapıları aşağıdaki şekilde sınıflandırılabilir.
Veri yapısı, verileri organize etmenin bir yoludur. Böylece, veri yapılarını ilkel veya standart veri yapıları ve ilkel olmayan veya kullanıcı tanımlı veri yapıları olarak gösterildiği şekilde sınıflandırabiliriz.
C ++ 'da desteklenen tüm veri türlerini gördük. Bu aynı zamanda verileri organize etmenin bir yolu olduğu için bunun standart bir veri yapısı olduğunu söylüyoruz.
Diğer veri yapıları ilkel değildir ve kullanıcının bunları bir programda kullanmadan önce tanımlaması gerekir. Bu kullanıcı tanımlı veri yapıları ayrıca doğrusal ve doğrusal olmayan veri yapıları olarak sınıflandırılır.
Doğrusal Veri Yapısı
Doğrusal veri yapılarının tüm öğeleri doğrusal veya sıralı bir şekilde düzenlenmiştir. Doğrusal veri yapısındaki her öğenin bir öncülü (önceki öğe) ve bir ardılı (sonraki öğe) vardır.
Doğrusal veri yapıları ayrıca statik ve dinamik veri yapılarına bölünmüştür. Statik veri yapıları genellikle sabit bir boyuta sahiptir ve boyutları derleme sırasında bildirildikten sonra değiştirilemez. Dinamik veri yapıları, boyutlarını dinamik olarak değiştirebilir ve kendilerine uyum sağlayabilir.
Doğrusal statik veri yapısının en popüler örneği bir dizidir.
Dizi
Bir dizi, aynı türden öğelerin sıralı bir koleksiyonudur. Dizinin her bir öğesine dizinin indeksi veya alt simgesi adı verilen dizideki konumu kullanılarak erişilebilir. Dizinin adı, dizideki ilk öğeyi gösterir.
Yukarıda gösterilen, n elemanlı bir 'a' dizisidir. Öğeler 0 ile n-1 arasında numaralandırılmıştır. Dizinin boyutu (bu durumda n) aynı zamanda dizinin boyutu olarak da adlandırılır. Yukarıdaki şekilde gösterildiği gibi, dizinin adı dizinin ilk elemanına işaret etmektedir.
Dizi, en basit veri yapısıdır ve öğelere doğrudan abonelikler kullanılarak erişilebildiği için etkilidir. Dizideki üçüncü elemana erişmek istiyorsak, o zaman a (2) demeliyiz.
Ancak dizi öğelerini eklemek veya silmek zordur. Bu nedenle dizileri yalnızca basit uygulamalarda veya öğelerin eklenmesinin / silinmesinin gerekli olmadığı uygulamalarda kullanırız.
Popüler doğrusal dinamik veri yapıları, bağlantılı liste, yığın ve kuyruktur.
Bağlantılı liste
Bağlantılı bir liste, düğümlerin bir koleksiyonudur. Her düğüm, veri öğesini ve bir sonraki düğüme bir işaretçi içerir. Düğümler dinamik olarak eklenebilir ve silinebilir. Bağlı bir liste, her düğümün yalnızca sonraki öğeye bir göstericiye sahip olduğu tek bağlantılı bir liste olabilir. Son eleman için, sonraki işaretçi boş olarak ayarlanır.
Çift bağlantılı listede, her düğümün, biri önceki düğüme, ikincisi de sonraki düğüme giden iki işaretçisi vardır. İlk düğüm için önceki işaretçi boş ve son düğüm için sonraki işaretçi boştur.
Yukarıdaki şekilde gösterildiği gibi, listenin başlangıcı başlık, bağlantılı listenin sonu ise kuyruk olarak adlandırılır. Yukarıda gösterildiği gibi, her düğümün bir sonraki öğeye bir göstericisi vardır. İmleci bir sonraki düğüme değiştirerek öğeleri kolayca ekleyebilir veya silebiliriz.
Yığın
Yığın, öğelerin yalnızca yığının 'Üstü' olarak bilinen bir ucundan eklenebildiği veya kaldırılabildiği doğrusal bir veri yapısıdır. Bu şekilde yığın, LIFO (Son Giren, İlk Çıkar) tipinde bellek erişimi sergiler.
Yukarıda gösterildiği gibi, yığındaki öğeler her zaman bir uca eklenir ve aynı uçtan çıkarılır. Buna yığının 'Üstü' denir. Bir öğe eklendiğinde, yığın aşağı itilir ve yığının tepesi bir konum artar.
Benzer şekilde, bir öğe kaldırıldığında, yığının tepesi azalır. Bir yığın boşaldığında, yığının üstü -1'e ayarlanır. Yığın üzerinde gerçekleştirilen iki ana işlem 'İtme' ve 'Pop' vardır.
Kuyruk
Sıra, öğelerin bir ucuna 'arka' olarak eklendiği ve 'ön' adı verilen başka bir uçtan silindiği bir başka doğrusal veri yapısıdır. Kuyruk, bellek erişim metodolojisinin türünü FIFO (İlk Giren, İlk Çıkar) gösterir.
Yukarıdaki şema, arka ve ön uçları olan bir sırayı göstermektedir. Sıra boşaldığında, arka ve ön işaretçiler birbiriyle çakışır.
Doğrusal Olmayan Veri Yapısı
Doğrusal olmayan veri yapılarında veriler sıralı olarak düzenlenmez, bunun yerine doğrusal olmayan bir şekilde düzenlenir. Elemanlar doğrusal olmayan bir düzenlemeyle birbirine bağlanır.
Doğrusal olmayan veri yapıları, Ağaçlar ve Grafiklerdir.
teknik destek mühendisi mülakat soruları ve cevapları
Ağaçlar
Ağaçlar, öğeler arasında hiyerarşik bir ilişkiye sahip olan doğrusal olmayan çok düzeyli veri yapılarıdır. Ağacın unsurlarına Düğümler denir.
En üstteki düğüme ağacın kökü denir. Kök, bir veya daha fazla alt düğüme sahip olabilir. Sonraki düğümler ayrıca bir veya daha fazla alt düğüme sahip olabilir. Alt düğümleri olmayan düğümlere yaprak düğümler denir.
Yukarıdaki diyagramda 6 düğümlü bir ağaç gösterdik. Bu üç düğümden yaprak düğümler, en üstteki düğümlerden biri kök ve diğerleri alt düğümlerdir. Düğüm sayısına, alt düğümlere vb. Veya düğümler arasındaki ilişkiye bağlı olarak, farklı ağaç türlerine sahibiz.
Grafikler
Grafik, adı verilen bir düğüm kümesidir köşeler adı verilen bağlantılar vasıtasıyla birbirine bağlanmış Kenarlar . Grafiklerin içinde bir döngü olabilir, yani aynı köşe belirli bir yolun başlangıç noktası olabileceği gibi bitiş noktası da olabilir. Ağaçların asla bir döngüsü olamaz.
Yukarıdaki diyagram, yönsüz bir grafiktir. Yönlendirilmiş okları kullanarak kenarları temsil ettiğimiz yönlendirilmiş grafiklere de sahip olabiliriz.
Veri Yapısına İlişkin İşlemler
Tüm veri yapıları, elemanları üzerinde çeşitli işlemler gerçekleştirir.
Bunlar tüm veri yapıları için ortaktır ve aşağıdaki şekilde listelenmiştir:
- Aranıyor: Bu işlem, belirli bir öğeyi veya anahtarı aramak için gerçekleştirilir. En yaygın arama algoritmaları sıralı / doğrusal arama ve ikili aramadır.
- Sıralama: Sıralama işlemi, bir veri yapısındaki öğelerin belirli bir düzende artan veya azalan şekilde düzenlenmesini içerir. Veri yapıları için kullanılabilen çeşitli sıralama algoritmaları vardır. Bunlar arasında en popüler olanları Hızlı Sıralama, Seçim sıralaması, Birleştirme sıralaması vb.
- Yerleştirme: Ekleme işlemi, veri yapısına bir öğe eklemeyle ilgilidir. Bu en önemli işlemdir ve bir elemanın eklenmesinin bir sonucu olarak, düzenleme değişir ve veri yapısının bozulmadan kalmasına dikkat etmemiz gerekir.
- Silme: Silme işlemi, veri yapısından bir öğeyi kaldırır. Ekleme için dikkate alınması gereken aynı koşullar, silme işlemi durumunda da yerine getirilecektir.
- Geçiş: Yapıdaki her bir öğeyi ziyaret ettiğimizde bir veri yapısını gezdiğimizi söylüyoruz. Veri yapısı üzerinde belirli belirli işlemleri gerçekleştirmek için çapraz geçiş gereklidir.
Sonraki konularımızda, öncelikle veri yapıları üzerinde yapılacak çeşitli arama ve sıralama tekniklerini öğreneceğiz.
Veri Yapısının Avantajları
- Soyutlama: Veri yapıları genellikle soyut veri türleri olarak uygulanır. Kullanıcılar, temel uygulama hakkında endişelenmeden yalnızca dış arayüzüne erişirler. Böylece veri yapısı bir soyutlama katmanı sağlar.
- Verimlilik: Verilerin uygun şekilde düzenlenmesi, verilere verimli erişimle sonuçlanır ve böylece programları daha verimli hale getirir. İkinci olarak, gereksinimlerimize bağlı olarak uygun veri yapısını seçebiliriz.
- Tekrar Kullanılabilirlik: Tasarladığımız veri yapılarını yeniden kullanabiliriz. Bir kitaplıkta da derlenebilir ve müşteriye dağıtılabilir.
Sonuç
Bununla, veri yapılarına giriş hakkındaki bu öğreticiyi sonlandırıyoruz. Bu eğiticide kısaca veri yapılarının her birini tanıttık.
Sonraki eğitimlerimizde, çeşitli arama ve sıralama tekniklerinin yanı sıra veri yapıları hakkında daha fazla bilgi edineceğiz.
=> Absolute C ++ Eğitim Serisi İçin Tıklayınız.
Önerilen Kaynaklar
- C ++ Veri Türleri
- Çizim ile C ++ 'da Kuyruk Veri Yapısı
- 2021'de Programlamayı Ortadan Kaldıran En İyi 10 Veri Bilimi Aracı
- Kullanıcı Tanımlı Değişkenleri Kullanarak JMeter Veri Parametrelendirmesi
- Veri Toplama Stratejileri ile 10'dan Fazla En İyi Veri Toplama Aracı
- 2021'de Veri İhtiyaçlarınızı Karşılamak İçin 10'dan Fazla En İyi Veri Yönetim Aracı
- IBM Rational Quality Manager for Test Data Management'taki Veri Havuzu Özelliği
- Çizimle C ++ 'da Yığın Veri Yapısı