Veri Yapıları Temel Bilgiler.





 Veri Yapıları Nedir?

Veri yapıları, verileri düzenlemek, depolamak ve işlemek için kullanılan yapıları ifade eder. Temelde iki ana türü vardır:


Lineer Veri Yapıları: Bu tür veri yapıları, verileri bir sıra içinde depolar. İkili arama ağaçları, diziler, bağlı listeler vb. gibi yapıları içerir.


Doğrusal Olmayan Veri Yapıları: Bu tür veri yapıları, verileri düz bir çizgide depolamazlar. Örnekler arasında ağaçlar, grafikler ve hash tablolar bulunur.


Veri yapılarını daha iyi anlamak için temel konseptlerden biri olan sınıf oluşturmayı ele alalım.



  1. Veri Tipleri ve Bellek Boyutları:

    • Programlama dillerinde veri tipleri, bellekte verileri nasıl saklayacağımızı belirler. Örneğin, tamsayılar, ondalık sayılar, karakterler gibi farklı veri tipleri vardır.
    • İşte bazı yaygın veri tipleri ve boyutları:
      • int: Tamsayılar için kullanılır. Bellekte genellikle 4 bayt (32 bit) kaplar.
      • float ve double: Ondalık sayılar için kullanılır. float 4 bayt, double ise 8 bayt kaplar.
      • char: Tek bir karakteri temsil eder. 1 bayt kaplar.
  2. Sınıf Oluşturma (Class):

    • Sınıflar, nesne tabanlı programlamada kullanılır. Bir sınıf, veri ve işlevleri bir araya getiren bir yapıdır.
    • Örneğin, bir “Öğrenci” sınıfı oluşturalım:
      class Ogrenci {
      public:
          // Veri üyeleri (özellikler)
          string ad;
          int yas;
      
          // İşlevler (metodlar)
          void selamVer() {
              cout << "Merhaba, ben " << ad << ". " << yas << " yaşındayım." << endl;
          }
      };
      
      int main() {
          // Sınıf örneği oluşturma
          Ogrenci ogrenci1;
          ogrenci1.ad = "Ahmet";
          ogrenci1.yas = 20;
      
          // Sınıf işlevini çağırma
          ogrenci1.selamVer();
      
          return 0;
      }
      
    • Yukarıdaki örnekte, Ogrenci sınıfı bir öğrencinin adını ve yaşını temsil eder. selamVer() işlevi öğrencinin bilgilerini ekrana yazdırır.
  3. Nesne Oluşturma:

    • Sınıfı kullanmak için nesne oluşturmalıyız. Yukarıdaki örnekte ogrenci1 bir nesnedir.
    • Nesne, sınıfın veri üyelerine ve işlevlerine erişim sağlar.

Bu basit örnekle veri yapıları ve sınıf oluşturma konusuna giriş yaptık. Daha fazla detay ve örneklerle ilerleyebilirsiniz. Başarılar dilerim! 🚀

Sınıf Oluşturma

Java gibi nesne yönelimli programlama dillerinde sınıflar, veri yapısı ve işlevsellik kombinasyonlarını temsil eder. Sınıf, bir nesnenin temel yapısını tanımlar ve bu nesnenin özelliklerini (alanlar) ve davranışlarını (metotlar) içerir.


Örnek bir sınıf oluşturmak için aşağıdaki adımları takip edebilirsiniz:


Adım 1: Sınıf Tanımı

Sınıfı tanımlayarak başlayın. Aşağıda basit bir Öğrenci sınıfı örneği bulunmaktadır:

public class Ogrenci {

    // Sınıfın alanları (özellikleri)

    String ad;

    int yas;


    // Sınıfın metotları (davranışları) buraya eklenebilir

}

Bu örnek, bir Ogrenci sınıfını tanımlar. Sınıf, öğrencinin adını ve yaşını temsil eden iki alan içerir.

Adım 2: Nesne Oluşturma
Sınıfı kullanabilmek için bir nesne (örnek) oluşturmanız gerekiyor:
public static void main(String[] args) {
    Ogrenci ogrenci1 = new Ogrenci(); // Ogrenci sınıfından bir nesne oluşturuldu
    ogrenci1.ad = "Ali";
    ogrenci1.yas = 20;

    Ogrenci ogrenci2 = new Ogrenci();
    ogrenci2.ad = "Ayşe";
    ogrenci2.yas = 22;
}
Burada ogrenci1 ve ogrenci2 isimli iki öğrenci nesnesi oluşturulmuştur.

Adım 3: Nesne Kullanımı
Oluşturulan nesneleri kullanarak sınıfın özelliklerine ve metotlarına erişebilirsiniz:
public static void main(String[] args) {
    Ogrenci ogrenci1 = new Ogrenci();
    ogrenci1.ad = "Ali";
    ogrenci1.yas = 20;

    Ogrenci ogrenci2 = new Ogrenci();
    ogrenci2.ad = "Ayşe";
    ogrenci2.yas = 22;

    // Ogrenci 1'in özelliklerini yazdırma
    System.out.println("Öğrenci Adı: " + ogrenci1.ad);
    System.out.println("Öğrenci Yaşı: " + ogrenci1.yas);

    // Ogrenci 2'nin özelliklerini yazdırma
    System.out.println("Öğrenci Adı: " + ogrenci2.ad);
    System.out.println("Öğrenci Yaşı: " + ogrenci2.yas);
}
Sınıf oluşturmak, veri yapıları oluşturmanın temel bir parçasıdır. Her sınıf, belirli bir veri yapısını temsil eder ve bu sınıflarla çalışarak daha karmaşık veri yapıları oluşturabilirsiniz. Veri yapılarına daha fazla derinlemesine giriş yapabilir ve özel veri yapılarını uygulayabilirsiniz.
1. Dizi (Array)
Dizi, aynı türden verileri depolamak için kullanılır. Dizi, sabit bir boyuta sahiptir ve elemanlar aritmetik bir sırayla depolanır.


int[] sayilar = {1, 2, 3, 4, 5};
String[] isimler = {"Ali", "Ayşe", "Mehmet"};

2. Bağlı Liste (Linked List)
Bağlı liste, verilerin düğümler aracılığıyla bağlandığı bir veri yapısıdır. Her düğüm, veriyi ve bir sonraki düğümün referansını içerir. Bağlı listelerin boyutu değiştirilebilir.

3. Yığıt (Stack)
Yığıt, verilerin üst üste eklenip çıkarıldığı bir veri yapısıdır. İlk giren, son çıkar (LIFO - Last-In, First-Out).

BAZI ÖRNEKLER...
  1. Dizi Elemanlarını Toplama:

    • Problem: Bir dizideki tüm elemanları toplayan bir fonksiyon yazın.
    • Çözüm (C++):
      #include <iostream>
      using namespace std;
      
      int toplamDiziElemanlari(int arr[], int n) {
          int toplam = 0;
          for (int i = 0; i < n; i++) {
              toplam += arr[i];
          }
          return toplam;
      }
      
      int main() {
          int dizi[] = {1, 2, 3, 4, 5};
          int n = sizeof(dizi) / sizeof(dizi[0]);
          cout << "Dizi elemanlarinin toplami: " << toplamDiziElemanlari(dizi, n) << endl;
          return 0;
      }
      
  2. En Büyük Elemanı Bulma:

    • Problem: Bir dizideki en büyük elemanı bulan bir fonksiyon yazın.
    • Çözüm (Python):
      def enBuyukEleman(dizi):
          return max(dizi)
      
      dizi = [10, 5, 8, 20, 15]
      print("En buyuk eleman:", enBuyukEleman(dizi))
      
  3. Bağlı Liste Döngüsü Kontrolü:

    • Problem: Verilen bir bağlı listede döngü olup olmadığını kontrol edin.
    • Çözüm (Java):
      class Node {
          int data;
          Node next;
          Node(int data) {
              this.data = data;
              this.next = null;
          }
      }
      
      boolean döngüKontrolü(Node head) {
          Node hızlı = head, yavaş = head;
          while (hızlı != null && hızlı.next != null) {
              hızlı = hızlı.next.next;
              yavaş = yavaş.next;
              if (hızlı == yavaş) {
                  return true; // Döngü var
              }
          }
          return false; // Döngü yok
      }
      

Bu örnekler, veri yapıları konusunda temel anlayışınızı geliştirmenize yardımcı olacaktır. Daha fazla örnek ve algoritma üzerinde çalışarak pratik yapmayı unutmayın! 🚀


Elbette! İşte Java ile yazılmış veri yapıları ve algoritmaları içeren bazı örnekler:

  1. Dizi Elemanlarını Toplama:

    • Problem: Bir dizideki tüm elemanları toplayan bir fonksiyon yazın.
    • Çözüm:
      public class DiziToplama {
          public static int toplamDiziElemanlari(int[] arr) {
              int toplam = 0;
              for (int eleman : arr) {
                  toplam += eleman;
              }
              return toplam;
          }
      
          public static void main(String[] args) {
              int[] dizi = {1, 2, 3, 4, 5};
              System.out.println("Dizi elemanlarının toplamı: " + toplamDiziElemanlari(dizi));
          }
      }
      
  2. En Büyük Elemanı Bulma:

    • Problem: Bir dizideki en büyük elemanı bulan bir fonksiyon yazın.
    • Çözüm:
      public class EnBuyukEleman {
          public static int enBuyukEleman(int[] dizi) {
              int enBuyuk = Integer.MIN_VALUE;
              for (int eleman : dizi) {
                  if (eleman > enBuyuk) {
                      enBuyuk = eleman;
                  }
              }
              return enBuyuk;
          }
      
          public static void main(String[] args) {
              int[] dizi = {10, 5, 8, 20, 15};
              System.out.println("En büyük eleman: " + enBuyukEleman(dizi));
          }
      }
      
  3. Bağlı Liste Döngüsü Kontrolü:

    • Problem: Verilen bir bağlı listede döngü olup olmadığını kontrol edin.
    • Çözüm:
      class Node {
          int data;
          Node next;
          Node(int data) {
              this.data = data;
              this.next = null;
          }
      }
      
      public class BagliListeDonguKontrolu {
          public static boolean donguKontrolu(Node head) {
              Node hizli = head, yavas = head;
              while (hizli != null && hizli.next != null) {
                  hizli = hizli.next.next;
                  yavas = yavas.next;
                  if (hizli == yavas) {
                      return true; // Döngü var
                  }
              }
              return false; // Döngü yok
          }
      
          public static void main(String[] args) {
              // Bağlı liste örneği oluşturma
              Node head = new Node(1);
              head.next = new Node(2);
              head.next.next = new Node(3);
              head.next.next.next = head; // Döngü oluştur
      
              System.out.println("Bağlı listede döngü var mı? " + donguKontrolu(head));
          }
      }
      

Bu örnekler, Java’da veri yapıları ve algoritmaları anlamak için iyi bir başlangıç ​​noktasıdır. Daha fazla çalışarak bu konuda daha da ustalaşabilirsiniz! 🚀



Elbette! İşte Java ile yazılmış veri yapıları ve algoritmaları içeren bazı örnekler:

  1. Dizi Elemanlarını Toplama:

    • Problem: Bir dizideki tüm elemanları toplayan bir fonksiyon yazın.
    • Çözüm:
      public class DiziToplama {
          public static int toplamDiziElemanlari(int[] arr) {
              int toplam = 0;
              for (int eleman : arr) {
                  toplam += eleman;
              }
              return toplam;
          }
      
          public static void main(String[] args) {
              int[] dizi = {1, 2, 3, 4, 5};
              System.out.println("Dizi elemanlarının toplamı: " + toplamDiziElemanlari(dizi));
          }
      }
      
  2. En Büyük Elemanı Bulma:

    • Problem: Bir dizideki en büyük elemanı bulan bir fonksiyon yazın.
    • Çözüm:
      public class EnBuyukEleman {
          public static int enBuyukEleman(int[] dizi) {
              int enBuyuk = Integer.MIN_VALUE;
              for (int eleman : dizi) {
                  if (eleman > enBuyuk) {
                      enBuyuk = eleman;
                  }
              }
              return enBuyuk;
          }
      
          public static void main(String[] args) {
              int[] dizi = {10, 5, 8, 20, 15};
              System.out.println("En büyük eleman: " + enBuyukEleman(dizi));
          }
      }
      
  3. Bağlı Liste Döngüsü Kontrolü:

    • Problem: Verilen bir bağlı listede döngü olup olmadığını kontrol edin.
    • Çözüm:
      class Node {
          int data;
          Node next;
          Node(int data) {
              this.data = data;
              this.next = null;
          }
      }
      
      public class BagliListeDonguKontrolu {
          public static boolean donguKontrolu(Node head) {
              Node hizli = head, yavas = head;
              while (hizli != null && hizli.next != null) {
                  hizli = hizli.next.next;
                  yavas = yavas.next;
                  if (hizli == yavas) {
                      return true; // Döngü var
                  }
              }
              return false; // Döngü yok
          }
      
          public static void main(String[] args) {
              // Bağlı liste örneği oluşturma
              Node head = new Node(1);
              head.next = new Node(2);
              head.next.next = new Node(3);
              head.next.next.next = head; // Döngü oluştur
      
              System.out.println("Bağlı listede döngü var mı? " + donguKontrolu(head));
          }
      }
      

Bu örnekler, Java’da veri yapıları ve algoritmaları anlamak için iyi bir başlangıç ​​noktasıdır. Daha fazla çalışarak bu konuda daha da ustalaşabilirsiniz! 🚀











Yorumlar

Bu blogdaki popüler yayınlar

Küresel Yapay Zeka Araştırmalarında Durdurma Çağrısı: MIRI'nin Uyarıları ve Gelecek İçin Çözüm Önerileri

Dünyanın İlk Yapay Zeka Hastanesi Çin'de Açıldı

Le Radeau de La Méduse - Medusa'nın Salı