Post on 31-Aug-2020
YZM 2116
Veri Yapıları
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
BAŞLAMADAN ÖNCE
• Algoritma ve programlama bilgisi,
• C / C# programlama dili,
• Diziler, structlar, işaretçiler,
• Nesne Yönelimli Programlama
2Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Bu dersi alan öğrencilerin
aşağıdaki konuları bildiği
varsayılarak dersler
işlenecektir:
BÖLÜM - 1
Bu bölümde,
• Algoritmalar ve Veri Yapıları,
• Lineer ve Non-Lineer Veri Yapıları,
• Statik ve Dinamik Veri Yapıları,
• Veri Yapılarının ADT ile Modellenmesi
konularına değinilecektir.
3Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
4
• Bilgisayar bilimlerindeki klasik problem çözme
süreci aşağıdaki gibidir:
Veri Yapıları ve Algoritmalar
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Veri Yapıları ve Algoritmalar (devam…)
5
• Veri yapıları ve Algoritmalar, “Bilgisayar
Bilimleri” alanındaki en köklü ve klasik
konulardan birisidir.
• Tüm bilgisayar programları Algoritma ve Veri
Yapılarından oluşur.
• Algoritmalar veri ve değişkenleri kullanarak bir
problemin çözümüne ulaşır.
• Bir değişken bir integer veya char türünde
bellekte bir hafızalık bir yer tutarken, bir Veri
Yapısı algoritmanın kullanacağı bilgiyi bir grup
hafızada tutar.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Örneğin, Array (dizi) bir veri yapısı bir isme
sahip aynı türde verilerin sabit uzunluklu bir
kümesidir.
• Bu bağlamda, bir Array için programın çalışması
süresince sabit uzunluklu bir hafıza ayrılır. Bu
yönüyle Array statik bir Veri Yapısıdır.
6
Veri Yapıları ve Algoritmalar (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Bilgisayar bilimlerinde işlenecek veri miktarı
büyüdükçe bu verilerin
o saklanması,
o sıralanması,
o veriler içinde arama yapılması
• gibi temel işlemlerin verimli şekilde (hafıza,
performans) gerçekleştirilebilmesi için farklı Veri
Yapılarının geliştirilmesi ihtiyacı doğmuştur.
7
Veri Yapısı Nedir?
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Bir problemin çözümü için öncelikle işlenecek verinin
çözüme uygun şekilde organize edilmesi gerekir. Bu
bağlamda VY tanımı:
• “Veri Yapısı, verinin verimli şekilde kullanılabilmesi için
belirli bir formatta saklanıp organize edilmesini
sağlayan matematiksel modeldir.”
8
Veri Yapısı Nedir? (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Linear ve Non-Linear Veri Yapıları
• Stack, Queue, Tree ve Graph’lar Veri Yapılarına
birer örnektir.
• Verinin organize edilmesine bağlı olarak Veri
Yapıları iki grupta sınıflandırılırlar:1. Linear VY: Elemanların (verinin) sırayla
erişildiği Array, Linked List, Stack ve Queue gibi
yapılardır.
2. Non-Linear VY: Verinin lineer olmayan
(hiyerarşik, network) bir şekilde saklandığı-
erişildiği Tree ve Graph gibi yapılardır.
9Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
10
Veri Yapıları ve Türleri
Veri YapılarıTemel Veri Türleri
int real char bool Linear Non-Linear
Array Tree
Stack
Queue
Linked List Graph
Linear ve Non-Linear Veri Yapıları (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• VY’leri implemente etmek için iki yöntem bulunmaktadır:
– Statik veri tipleri kullanmak (diziler). Statik veri türleri,
kendilerine ayrılan bölümün tamamını kullanmasalar dahi
sabit bir bellek alanı tahsis ederler.
– Dinamik veri tipleri kullanmak (işaretçi, referans türleri).
Program çalışma zamanında boyutları büyüyüp
küçülebilir.
• Statik VY’ler, dinamik VY’leri oluştururlar.
11YZM 2116 – Veri Yapıları
Veri Yapıları Implementasyonu
12
Örnek VY: Linked List (Bağlı Liste)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
13
Örnek VY: Tree (Ağaç)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Bir algoritma için benzer VY modelleri arasından
seçim yapılırken hangi kriterleri göz önünde
bulunduracağız?
1. Hafıza kullanımı
2. Verimliliği (kabaca hızı)
14
Hangi VY Kullanacağım?
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Abstract Data Type (ADT)
• ADT (Abstract Data Type), VY bağlamında bir
problemin bilgisayar çözümü için kullanılan, genelde
matematiksel bir modeldir.
• Örneğin, bir grup sayıyı sıralamak için ADT,
– bir dizi ve
– dizi üzerinde çalışan sıralama algoritması olarak düşünülebilir.
• Bir başka ifadeyle, bir ADT
– verinin organizasyonu ve
– onların üzerinde yapılacak işlemlerin matematiksel (kısmen)
modellenmesidir.
• Örneğin, bir tamsayı dizisi ve bu dizi üzerinde read, sort,
search ve print işlemleri basit bir ADT modelidir.
15Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Örnek: Stack ADT
16
Yaygın kullanılan ADT’ler’den biri olan Stack ADT’si,
verinin saklanma biçimi ve bu veri üzerinde tanımlanan
işlemler şeklinde modellenir.
Yığınİşlemleri
Açıklama
push() Yığına eleman ekler.
pop() En son eklenen elemanı ayırır.
top() Son eklenen eleman değerini getirir.
size() Eleman sayısını döndürür.
isEmpty() Yığında eleman olup olmadığını kontrol eder.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• ADT, kullanıcı açısından arka plandaki
karmaşıklığı kullanıcıdan soyutlama (abstraction)
anlamında, OOP mantığına uygun bir yaklaşımdır.
• ADT’ler NYP yaklaşımında Interface ve Abstract
Class ile tanımlanırlar.
• Interface’de metot adları, parametre türleri ve
döndürecekleri değer türleri gibi soyut tanımlamalar
yapılırken metotlar ilgili Interface’i implemente eden
sınıflarda tanımlanır.
17
Örnek: Stack ADT (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
18Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Örnek: Stack ADT (devam…)
19
İYİ ÇALIŞMALAR…
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Yararlanılan Kaynaklar
20
• Ders Kitabı:
• Data Structures through JAVA, V.V.Muniswamy
• Yardımcı Okumalar:
• Data Structures and Algorithms in Java, Narashima
Karumanchi
• Data Structures, Algorithms and Applications in Java,
Sartaj Sahni
• Algorithms, Robert Sedgewick
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları