Yazılım

Veri yapısı nedir ve türleri nelerdir?

Veri nedir?

Veri yapılarına giriş yapmadan önce verinin ne olduğunu anlatmak istiyorum.
Veri: rakamlar, sayılar ve figürler den oluşan, algoritmada kullanılan ve bilgiyi taşıyan işlenmemiş parçacıklardır. kısaca Bilginin işlenmemiş halidir 😊
Algoritma: Veri tanımında bahsettiğim algoritma ise bir problemin çözümü için uygulanması gerek adımların tümüdür.

Veri yapısı nedir?

Özetleyecek olursak ,Veri yapısı: verileri düzenlemek ve saklamak için kullanılan yapılardır. Kısa ama her şeyi anlatan bir tanım 😋.

Neden Verilere ihtiyaç duyuyoruz?

Modern dünyamızda kullandığımız bilgisayarlar, gündelik işlerde bile binlerce veri girdisi ve çıktısı ile uğraşıyor, programlama sırasında bu verileri daha etkin bir şekilde kullanabilmek ve düzenleyebilmek için Veri yapılarına ihtiyaç duyuyoruz ve bu yüzden bizim için çok önemli. 😊

Veri yapısı Türleri:

Array:

Array(dizi), belli boyuttaki verileri dizili ve doğrusal (linear) bir şekilde saklanmasına ve düzenlenmesine yarayan bir veri yapısıdır.


Dynamic Array:

Dynamic Array(dinamik dizi), array veri yapısı ile neredeyse aynıdır tek fark genişletilebilirdir yani belli bir boyutu yoktur arrayin aksine.


Stack:

Stack doğrusal (linear) bir veri yapısıdır ve adından da anlaşılabileceği üzere verileri yığın halinde saklar (ENG stack -> TR yığın). Stack veri yapısından bir veriyi almak istiyorsak o veri öncesindeki verileri stack’tan çıkarmamız gerekir bir yığın halinde saklanıldıkları için, ayrıca bir veriyi de sadece stack’ın üstüne ekleyebiliriz yani aralara veya sona veri ekleyemeyiz.

Stack veri yapısını daha önce de bir yazımda bahsettiğim gibi bir kitap yığını gibi düşünebilirsiniz, o yazı da da dediğim gibi sonuçta kitap yığınında istediğiniz bir kitabı düzgünce almak istiyorsanız o kitapın üstündeki kitapları da indirmeniz gerekir aynı stack veri yapısındaki gibi

Stack veri yapısı çalışma şekli.

-*-Linked List

Linked List (Bağlı liste), node/link diye adlandırılan yapılardan oluşur, bu yapılar veriyi ve kendisinden sonraki yapıyı tutar, bu sayede verileri doğrusal (linear) ve birbirine bağlı bir şekilde saklayıp kullanabiliriz.


Queue

Queue, verilerin sırayla kullanıldığı ve ilk giren verinin sıranın önünde olduğu için ilk çıktığı bir veri yapıdır. Tek tek ve sırayla işlenmesi gereken verilerde işe yarar bir veri yapısıdır. Ayrıca bir veriyi de sadece queue(sıra)’nın arkasına ekleyebiliriz yani aralara veya sıranın önüne veri ekleyemeyiz. Bu kısım stack’ı andırıyor biraz. 😊


Veri yapısı örnekleri (C++)

C++ STL(Standart Kütüphane) sinde çoğu veri yapısı implemente edilmiş halde bulunuyor, bu sayede çoğu veri yapısını c++ ile kullanabiliyoruz

Array:

#include <iostream>
int main()
{
   // arrayler statik olduğu için array boyutunu veriyoruz
   // ve array'i tanımlıyoruz.
   int arr[10] = {0,1,2,3,4,5,6,7,8,9}; 
   // şuan belirlediğimiz 10 eleman sınırı dolduğu için başka eleman sonradan ekleyemeyiz

   // range based bir for döngüsü ile array içindeki elemanlara erişelim.
   for(int& item : arr)
   {
        std::cout << item << std::endl;
   }
   /*
    Çıktı:
    *0
    *1
    *2
    *3
    *4
    *5
    *6
    *7
    *8
    *9
   */}

Dynamic Array:

#include <iostream>
#include <vector>
int main()
{
   // dynamic arrayler adı üstünde dinamik olduğu için-
   // özellikle boyutunu belirtmeye gerek yok
   std::vector dynarr = {0,1,2,3,4,5,6,7,8};
   dynarr.push_back(9); // yeni eleman ekleyebiliyoruz boyut sınırı olmadığı için
   // range based bir for döngüsü ile dynamic arrayin içindeki elemanlara erişelim.
   for(int& item : dynarr )
   {
        std::cout << item << std::endl;
   }
   /*
    Çıktı:
    *0
    *1
    *2
    *3
    *4
    *5
    *6
    *7
    *8
    *9
   */
}

Stack:

#include <iostream>
#include <stack>
int main()
{
    std::stack<int> intStack;
    for(int i=0; i < 10; i++)
        intStack.push(i); // 10 a kadar olan sayıları ekliyoruz üst üste (sıfır dahil)
    std::cout << intStack.top() << std::endl; // çıktı: '9' çünkü on'a kadar sayıları ekledikten sonra en üstte(top) dokuz kalır.
    intStack.pop(); // en üstte sekiz kaldı dokuzu yığının üstünden indirdik
    std::cout << intStack.top() << std::endl; // çıktı: '8', sebepini yukarda belirttiğim gibi
}

Linked List

#include <iostream>
template<typename Typ>
struct link
{
    Typ data;
    link<Typ>* next;
    
};
int main()
{
    link<int> Lhead{0,NULL}; // Başı
    link<int> tail1{1,NULL}; // kuyruk 1
    link<int> tail2{2,NULL}; // kuyruk 2
    link<int> tail3{3,NULL}; // kuyruk 3
    // Ve birbirlerine bağla!!
    Lhead.next = &tail1;
    tail1.next = &tail2;
    tail2.next = &tail3;
    
    for(link<int>* lptr = &Lhead; lptr; lptr = lptr->next)
    {
        std::cout << lptr->data << '\n';
    }
    /*
    0
    1
    2
    3
    */}

Queue

#include <iostream>
#include <queue>
int main()
{
    std::queue<int> myqueue;
    for(int i=0; i < 10; ++i)
    {
        myqueue.push(i); // sırayla 10 sayıyı ekle queue(sıra) ya
    }
    for(int i=0; i < 10; ++i)
    {
        std::cout << myqueue.front() << std::endl; // Sıradaki veriyi ekrana bastır
        myqueue.pop(); // Ve sıradan çıkar :)
    }
    /*
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    */}

Umarım sizlere az da olsa faydam dokunmuştur 🙂 ,bu yazıma zamanınızı ayırdığınız çok teşekkür ederim, İyi çalışmalar! 😀

Efe Osman

View Comments

Recent Posts

Su Krizine Karşı Teknolojik Çözümler Nelerdir? 2024

Günümüzde, dünya genelinde su kaynakları giderek azalıyor ve su krizi giderek artan bir endişe kaynağı…

% Gün Önce

Webcam Güvenliği: İpuçları ve En İyi Uygulamalar

Web kameraları, günümüzde hemen hemen her bilgisayarın ayrılmaz bir parçası haline gelmiştir. Uzaktan çalışma, eğitim…

% Gün Önce

Evdeki Akıllı Cihazlarınızı Siber Tehditlerden Nasıl Korursunuz?

Günümüzde teknolojinin ilerlemesiyle birlikte evlerimizde bulunan birçok cihaz internete bağlanabilmekte ve bu durum hayatımızı kolaylaştıran…

% Gün Önce

Yazılım Nedir ve Neden Önemlidir?

Günümüzün dijital çağında, hemen hemen her sektörde yazılımın rolü büyük bir önem taşımaktadır. Peki, yazılım…

% Gün Önce

Yeşil Teknoloji ve Sürdürülebilirlik: Geleceğin Çevre Dostu Çözümleri

Günümüzde, çevre sorunları ve sürdürülebilirlik, küresel ölçekte giderek artan bir önem kazanmaktadır. Yeşil teknoloji, bu…

% Gün Önce

Geleceğin Ulaşım Teknolojileri: Dijital Devrimin Taşıdığı Potansiyel

Geleceğin ulaşım teknolojileri, sadece daha hızlı ve daha verimli taşımacılık sağlamakla kalmıyor, aynı zamanda çevre…

% Gün Önce

This website uses cookies.