veri yapıları laboratuvarı - karabük...
TRANSCRIPT
2013 2014
Ders Sorumlusu: Yrd. Doç. Dr. Hakan KUTUCU
Lab. Sorumlusu: Arş. Gör. Caner ÖZCAN
Veri Yapıları Laboratuvarı
2
İÇİNDEKİLER
Uygulama 1: Diziler ve İşaretçiler, Dinamik Bellek Ayırma .............................................. 4
1.1. Amaç ve Kapsam ....................................................................................................................... 4
1.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................... 4
1.3. Uygulama Soruları .................................................................................................................... 4
1.4. Değerlendirme .......................................................................................................................... 5
Uygulama 2: Yapılar ...................................................................................................... 6
2.1. Amaç ve Kapsam ....................................................................................................................... 6
2.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................... 6
2.3. Uygulama Soruları .................................................................................................................... 6
2.4. Değerlendirme .......................................................................................................................... 6
Uygulama 3: Linkli Liste Yapıları ve İşlemleri .................................................................. 7
3.1. Amaç ve Kapsam ....................................................................................................................... 7
3.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................... 7
3.3. Uygulama Soruları .................................................................................................................... 7
3.4. Değerlendirme .......................................................................................................................... 8
Uygulama 4: Linkli Liste Yapıları ve İşlemleri .................................................................. 9
4.1. Amaç ve Kapsam ....................................................................................................................... 9
4.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................... 9
4.3. Uygulama Soruları .................................................................................................................... 9
4.4. Değerlendirme ........................................................................................................................ 10
Uygulama 5: Yığın Yapısı ............................................................................................... 11
5.1. Amaç ve Kapsam ..................................................................................................................... 11
5.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................. 11
5.3. Uygulama Soruları .................................................................................................................. 11
5.4. Değerlendirme ........................................................................................................................ 12
Uygulama 6: Yığın Yapısı ............................................................................................... 13
6.1. Amaç ve Kapsam ..................................................................................................................... 13
6.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................. 13
6.3. Uygulama Soruları .................................................................................................................. 13
6.4. Değerlendirme ........................................................................................................................ 14
Uygulama 7: Kuyruk Yapısı ........................................................................................... 15
7.1. Amaç ve Kapsam ..................................................................................................................... 15
7.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................. 15
3
7.3. Uygulama Soruları .................................................................................................................. 15
7.4. Değerlendirme ........................................................................................................................ 16
Uygulama 8: Ağaç Veri Yapısı ve İkili Arama Ağaçları ..................................................... 17
8.1. Amaç ve Kapsam ..................................................................................................................... 17
8.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................. 17
8.3. Uygulama Soruları .................................................................................................................. 17
8.4. Değerlendirme ........................................................................................................................ 18
Uygulama 9: AVL Ağaçlar .............................................................................................. 19
9.1. Amaç ve Kapsam ..................................................................................................................... 19
9.2. Uygulamadan Önce Yapılması Gerekenler ............................................................................. 19
9.3. Uygulama Soruları .................................................................................................................. 19
9.4. Değerlendirme ........................................................................................................................ 20
Uygulama 10: Öncelikli Kuyruklar: İkili Yığınlar ............................................................. 21
10.1. Amaç ve Kapsam................................................................................................................... 21
10.2. Uygulamadan Önce Yapılması Gerekenler ........................................................................... 21
10.3. Uygulama Soruları ................................................................................................................ 21
10.4. Değerlendirme ...................................................................................................................... 22
Uygulama 11: Hash Yapıları .......................................................................................... 23
11.1. Amaç ve Kapsam................................................................................................................... 23
11.2. Uygulamadan Önce Yapılması Gerekenler ........................................................................... 23
11.3. Uygulama Soruları ................................................................................................................ 23
11.4. Değerlendirme ...................................................................................................................... 24
Uygulama 12: Graf Veri Yapısı ....................................................................................... 25
12.1. Amaç ve Kapsam................................................................................................................... 25
12.2. Uygulamadan Önce Yapılması Gerekenler ........................................................................... 25
12.3. Uygulama Soruları ................................................................................................................ 25
12.4. Değerlendirme ...................................................................................................................... 26
4
Uygulama 1: Diziler ve İşaretçiler, Dinamik Bellek Ayırma
1.1. Amaç ve Kapsam
Bu uygulamada programlamanın temelini oluşturan tek boyutlu diziler, çok boyutlu diziler ve
işaretçiler ile ilgili uygulamalar incelenecektir. Dinamik bellek ayrılmasının nasıl yapıldığı
öğrenilecektir.
1.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
1.3. Uygulama Soruları
a) Küçükten büyüğe doğru sıralı bir diziye, dizinin sırasını bozmayacak şekilde, verilen bir elemanı
ekleyen program kodunu yazınız.
Girilen dizi: 1 3 5 7 9 Eklenecek sayı: 4 Dizinin son hali: 1 3 4 5 7 9
5
b) Dışarıdan alacağınız boyut değerlerine göre dinamik olarak tanımlayacağınız iki matrisin
çarpımını, çarpım kurallarını sağlayan kontrolleri de içerecek şekilde gerçekleyen program kodunu
yazınız.
1.4. Değerlendirme
6
Uygulama 2: Yapılar
2.1. Amaç ve Kapsam
Bu uygulamada yapıların tanımlanması ve kullanımı incelenecektir. Yapıların paralel dizi
oluşturmamıza gerek kalmadan birden fazla değişken türüyle yeni bir değişken türü oluşturmamıza
yarayan bir tanımlama sunduğu görülecektir.
2.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
2.3. Uygulama Soruları
Bir fabrikada çalışan işçilerin “ad, soy ad, sicil, bölüm, maaş” gibi bilgilerini içeren bir struct yapısı
oluşturunuz. Dışarıdan alacağınız işçi sayısı değerine göre gerekli değişken tanımlamalarınızı yaparak,
işçi bilgilerinin klavyeden girilerek kaydedildiği program kodunu yazınız.
2.4. Değerlendirme
7
Uygulama 3: Linkli Liste Yapıları ve İşlemleri
3.1. Amaç ve Kapsam
Bu uygulamada liste yapılarının tanımlanması, kullanılması incelenecektir. Listeler üzerinde yapılan
eleman ekleme, silme, güncelleme vb. işlemlerin gerçekleştirilmesi görülecektir.
3.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
3 .3. Uygulama Soruları
a) N adet düğümden oluşan ve düğümler içerisinde rastgele atanmış rakamlar tutulan ‘list’ isimli bir
bağlı doğrusal liste yapısı oluşturulmuştur. Listede tutulan bu rakamların tekrar edilme sayılarını
hesaplayıp sonucu tanımlanan bir ‘sonuc’ dizisi ile geri döndüren ‘sayRakam’ isimli fonksiyonu
yazınız.
8
b) Bir bağlı dairesel listelerde listenin sonundaki düğümü kesip, listenin başına ekleyen bir fonksiyon
yazınız.
3.4. Değerlendirme
9
Uygulama 4: Linkli Liste Yapıları ve İşlemleri
4.1. Amaç ve Kapsam
Bu uygulamada listeler üzerinde yapılan eleman ekleme, silme, güncelleme vb. işlemlerin
gerçekleştirilmesi incelenecektir. Bunun yanında listeler üzerinde yapılabilecek farklı uygulamalar
görülecektir.
4.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
4 .3. Uygulama Soruları
a) İki bağlı doğrusal bir listeyi (örneğin 13, 17, 14, 11 dizilimine sahip) tersten yerleşecek şekilde
(düğümler 11, 14, 17, 13 şeklinde dizilecek) yeniden oluşturan bir fonksiyon yazınız.
10
b) İki bağlı dairesel bir listede, fonksiyona parametre olarak aktarılan “A” listesindeki “x” verisini
içeren ikinci düğümü bularak silen (bu düğümü belleğe iade eden) bir fonksiyon yazınız.
4.4. Değerlendirme
11
Uygulama 5: Yığın Yapısı
5.1. Amaç ve Kapsam
Bu uygulamada yığın nedir, nerelerde kullanılır ve nasıl tanımlanır gibi soruların cevapları
öğrenilecektir. Bununla birlikte yığın yapısının çalışma prensibi incelenecektir. Yığına eleman ekleme,
yığından eleman çıkarma işlemleri görülecektir.
5.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
5 .3. Uygulama Soruları
Dışarıdan verilen bir kelimeyi, kelimenin ilk elemanından son elemanına kadar yığın yapısına ekleyen
ve daha sonra yığın yapısından çıkararak ekrana yazdıran programı gerçekleyiniz.
12
5.4. Değerlendirme
13
Uygulama 6: Yığın Yapısı
6.1. Amaç ve Kapsam
Bu uygulamada yığın nedir, nerelerde kullanılır ve nasıl tanımlanır gibi soruların cevapları
öğrenilecektir. Bununla birlikte yığın yapısının çalışma prensibi incelenecektir. Yığına eleman ekleme,
yığından eleman çıkarma işlemleri görülecektir.
6.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
6 .3. Uygulama Soruları
Dışarıdan girilen ve aşağıda verilen örmekteki gibi parantezler kullanılarak tanımlanan herhangi bir
matematiksel formülün parantez sayısının ve kullanımının doğru yapılıp yapılmadığını kontrol eden
program kodunu yazınız.
Giriş: 7 – ( ( X * ( ( X + Y ) / ( J – 3 ) ) + Y ) / ( 4 – 2.5 ) ) Sonuç : Doğru
Giriş: 7 – ( ( X * ( ( X + Y ) / ( J – 3 ) ) + Y ) / ( 4 – 2.5 ) ) ) Sonuç: Hatalı
14
6.4. Değerlendirme
15
Uygulama 7: Kuyruk Yapısı
7.1. Amaç ve Kapsam
Bu uygulamada kuyruk nedir, nerelerde kullanılır ve nasıl tanımlanır gibi soruların cevapları
öğrenilecektir. Bununla birlikte kuyruk yapısının çalışma prensibi incelenecektir. Kuyruğa eleman
ekleme, kuyruktan eleman çıkarma işlemleri görülecektir.
7.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
7 .3. Uygulama Soruları
Dışarıdan verilen 10 elemanlı bir sayı dizisini oluşturulan kuyruk yapısına ekleyen ve daha sonra bu
kuyruktaki elemanları ekrana yazarak kuyruktan çıkaran program kodunu yazınız.
16
7.4. Değerlendirme
17
Uygulama 8: Ağaç Veri Yapısı ve İkili Arama Ağaçları
8.1. Amaç ve Kapsam
Bu uygulamada ağaç veri yapısının tasarımı ve kullanımı öğrenilecektir. En önemli ağaç yapılarından
biri olan ikili arama ağaçlarının yapısı incelenecektir. İkili ağaçların hangi uygulama alanlarında
kullanıldığı görülecektir.
8.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
8.3. Uygulama Soruları
a) “50, 28, 46, 80, 47, 96, 14, 10, 68, 20, 34, 71” değerlerine sahip düğümlerini oluşturacağınız ikili
ağaç yapısına yerleştiren program kodunu yazınız.
18
b) Yazacağınız bir fonksiyonla, a şıkkında verilen ağaç yapısı üzerinde dışarıdan girilen “x” sayısının
bulunup bulunmadığını tespit eden, bulunduğu takdirde adresini, aksi takdirde “null” değerini
döndüren fonksiyonun program kodunu yazınız.
8.4. Değerlendirme
19
Uygulama 9: AVL Ağaçlar
9.1. Amaç ve Kapsam
Bu uygulamada AVL ağaç veri yapısının kullanımı ve tanımlanması incelenecektir. Bununla birlikte
ikili ağaç yapısından ne gibi farklılıklar gösterdiği görülecektir.
9.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
9 .3. Uygulama Soruları
“60, 35, 20, 15, 17, 13, 40, 30, 18, 25” elamanlarını oluşturacağınız AVL tree yapısına yerleştiren
program kodunu yazınız.
20
9.4. Değerlendirme
21
Uygulama 10: Öncelikli Kuyruklar: İkili Yığınlar
10.1. Amaç ve Kapsam
Bu uygulamada ikili yığınlar veri yapısının kullanımı öğrenilecektir. İkili yığınların tasarımı ve
üzerinde gerçekleştirilen işlemler incelenecektir.
10.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
10 .3. Uygulama Soruları
İkili yığınlar ile ilgili derste verilen kodlamaları gerçekleyiniz.
22
10.4. Değerlendirme
23
Uygulama 11: Hash Yapıları
11.1. Amaç ve Kapsam
Bu uygulamada hash yapılarının kullanımı öğrenilecektir. Hash yapılarının tasarımı ve üzerinde
gerçekleştirilen işlemler incelenecektir.
11.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
11.3. Uygulama Soruları
Hash yapıları ile ilgili derste verilen kodlamaları gerçekleyiniz.
24
11.4. Değerlendirme
25
Uygulama 12: Graf Veri Yapısı
12.1. Amaç ve Kapsam
Bu uygulamada graf veri yapısının tanımlanması, tasarımı ve kodlaması öğrenilecektir. Graf yapısının
hangi durumlarda faydalı olacağı görülecektir. Graf yapısında verilerin nasıl tutulduğu ve veriler
üzerinde hangi işlemlerin yapılacağı incelenecektir.
12.2. Uygulamadan Önce Yapılması Gerekenler
Uygulamaya gelmeden önce uygulanacak konular hakkında teorik bilgilerin araştırılarak okunması ve
hazır kodlamaların incelenmesi gerekmektedir.
12 .3. Uygulama Soruları
Graf yapısı için gerekli olan veri tanımlamalarını yaparak n tane düğümü bulunan bir graftaki toplam
komşu düğümlerin sayısını döndüren program kodunu yazınız.
26
12.4. Değerlendirme