Sunum

Öğ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