Öğr. Gör. Dr. Alper VAHAPLAR 2014 – 2015 Stack (Yığın) Kuyruk (Queue) Linked List (Bağlı/Bağlantılı Liste) Tree (Ağaç) Graph (Çizge / Graf) State Machine (Durum Makinası) Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 2 1 Stack (Yığın) Veri Modeli Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 3 Bellek adresleme üzerine kurulu, Sıralama ve geçici saklama için kullanılan, LIFO (Last In First Out) Son giren ilk çıkar mantığıyla çalışan, Soyut (abstract) veri yapısıdır. Temel iki işlem: push (en üste veri ekleme) pop (en üstten veri alma ve çıkarma) Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 4 2 Array ile stack uygulaması int stack[10]={0}, top=0; main() { push(5); 5 stack[0] push(9); 12 stack[1] push(7); stack[2] pop(); stack[3] pop(); push(12); stack[4] } stack[5] stack[6] … Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 5 Kullanıcının gireceği 10 adet sayıyı stack(ler) kullanarak sıralayın… void ekle(int sayi) { if (ttop==0) pusht(sayi); else { if ((t[ttop-1]<=sayi)) pusht(sayi); else { while ((ttop>0) && (t[ttop-1]>sayi)) pushy(popt()); pusht(sayi); while (ytop>0) pusht(popy()); } } } Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 6 3 Yığın Örnekleri Palindrome: Düzden ve tersten aynı okunan ifadelere palindrome denir. Ör: kabak traş şart a man a plan a canal panama Alıştırma: Verilen bir kelimenin palindrome olup olmadığını stackler ile bulduran programı yazınız. Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 7 Stack (Yığın) Kuyruk (Queue) Linked List (Bağlı/Bağlantılı Liste) Tree (Ağaç) Graph (Çizge / Graf) State Machine (Durum Makinası) Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 8 4 FIFO (First In First Out ) Bellek üzerinde oluşturulan soyut bir model Alper VAHAPLAR 9 Gerçek hayattan örnekler: BİL2001-Algoritmalar ve Veri Yapıları Yemekhane, Banka, Otoyol Gişeleri, Market kasa kuyrukları Bilgisayarda Yazıcı kuyruğu, İşlem kuyruğu, Ağ paketleri… Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 10 5 Kuyruk İşlemleri Ekle (q, a): Enqueue (Stacklerdeki PUSH) q kuyruğunun sonuna “a” nesnesini ekler. x = Çıkar(q): Dequeue (Stacklerdeki POP) q kuyruğunun başındaki elemanı silerek x’e atar. Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 11 Kuyruk Çeşitleri Dizi üzerinde sabit (Front, Rear) Dizi üzerinde Kaydırmalı (Front = 0) Dizi üzerinde çevrimsel (Circular) Linked List ile Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 12 6 Doğrusal Kuyruk Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 13 Ekleme işlemi Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 14 7 Ekleme işlemi Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 15 Çıkarma işlemi Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 16 8 Çıkarma işlemi Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 17 Kaydırma ile (Shifting) “A” kuyruktan çıksın Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 18 9 Çevrimsel (Circular) Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 19 Çevrimsel (Circular) Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 20 10 Array Yapısı kullanarak 10 sayı saklayabilecek bir kuyruk yapısı oluşturup ekleme ve çıkarma işlemlerini gerçekleştiren programı yazınız. Shifting ile uygulayınız. Circular queue oluşturunuz. Alper VAHAPLAR BİL2001-Algoritmalar ve Veri Yapıları 21 11
© Copyright 2024 Paperzz