bölüm 6. karma - ?· karma tablosu karma tablosu baglı liste ile karma˘ tablosu tanımı...

Download Bölüm 6. Karma - ?· Karma Tablosu Karma Tablosu Baglı Liste ile Karma˘ Tablosu Tanımı Açık…

Post on 16-Feb-2019

224 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 1 / 31

Blm 6. Karma

Olcay Taner Yldz

2014

Karma Tablosu

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 2 / 31

5 eleman ieren rnek bir karma tablosu

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 3 / 31

6 76

5

4 11

3 423

2 9

1 71

0

Tam saylar ieren karma tablosu tanm

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 4 / 31

1 public class Karma{2 Ornek[] tablo ;3 boolean[] silindi ;4 int N;5 public Karma(int N){6 tablo = new Ornek[N];7 silindi = new boolean[N];8 this.N = N;9 }

10 }

Tamsaylar iin kullanlabilecek rnek birkarma fonksiyonu

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 5 / 31

1 int karma(int sayi){2 return sayi % N;3 }

Katarlar (karakter dizileri) iinkullanlabilecek rnek bir karma fonksiyonu

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 6 / 31

1 int karma(String katar){2 int i, pozisyon = 0;3 for (i = 0; i < katar.length; i++){4 pozisyon = 39 * pozisyon + katar.charAt(i );5 }6 pozisyon = pozisyon % N;7 return pozisyon;8 }

Bagl Liste ile Karma Tablosu Tanm

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 7 / 31

Her eleman bir bagl liste olan rnek birkarma tablosu

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 8 / 31

9 49 29 19

8

7

6 36 6

5 75

4 64 14 24

3

2

1 71 1

0 10

Her eleman bir bagl liste olan karmatablosu tanm

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 9 / 31

1 public class Karma{2 Liste [] tablo ;3 int N;4 public Karma(int N){5 int i;6 tablo = new Liste[N];7 for (i = 0; i < N; i++)8 tablo [ i ] = new Liste ();9 this.N = N;

10 }11 }

Her eleman bagl liste olan bir karmatablosunda bir say arama

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 10 / 31

1 Eleman karmaAra(int icerik){2 int adres;3 adres = karma(icerik);4 return tablo[adres].listeAra( icerik );5 }

Her eleman bagl liste olan bir karmatablosuna yeni bir eleman ekleme

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 11 / 31

1 void karmaEkle(Eleman eleman){2 int adres;3 adres = karma(eleman.icerik);4 tablo [adres]. listeyeEkle (eleman);5 }

Her eleman bagl liste olan bir karmatablosundan bir eleman silme

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 12 / 31

1 void karmaSil(int icerik){2 Eleman eleman;3 int adres;4 adres = karma(icerik);5 eleman = tablo[adres]. listeAra ( icerik );6 if (eleman != null)7 tablo [adres]. listedenSil (eleman);8 }

Karma Tablosu Islemleri (Bagl Liste)

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 13 / 31

Arama: O(1) Ekleme: O(1) Silme: O(1)

Ak Adresleme

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 14 / 31

Dogrusal strateji ile dzenlenmis akadreslemeli bir karma tablosu

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 15 / 31

9 89 89 89 89 89

8 18 18 18 18

7

6

5

4

3

2 69

1 58 58

0 49 49 49

Karma tablosunda bir say arama (dogrusalstrateji)

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 16 / 31

1 Ornek karmaAra(int icerik){2 int adres;3 adres = karma(icerik);4 while (tablo[adres] != null){5 if (!( silindi [adres]) && tablo[adres]. icerik == icerik )6 break;7 adres = (adres + 1) % N;8 }9 return tablo[adres];

10 }

Karma tablosunda yeni bir eleman ekleme(dogrusal strateji)

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 17 / 31

1 void karmaEkle(Ornek ornek){2 int adres;3 adres = karma(ornek.icerik);4 while (tablo[adres] != null && !(silindi [adres]))5 adres = (adres + 1) % N;6 if (tablo [adres] != null)7 silindi [adres] = false;8 tablo [adres] = ornek;9 }

Karma tablosundan eleman silme (dogrusalstrateji)

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 18 / 31

1 void karmaSil(int icerik){2 int adres;3 adres = karma(icerik);4 while (tablo[adres] != null){5 if (!( silindi [adres]) && tablo[adres]. icerik == icerik )6 break;7 adres = (adres + 1) % N;8 }9 silindi [adres] = true;

10 }

Ikinci derece strateji ile dzenlenmis akadreslemeli bir karma tablosu

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 19 / 31

9 89 89 89 89 89

8 18 18 18 18

7

6

5

4

3 69

2 58 58

1

0 49 49 49

ift karma strateji ile dzenlenmis akadreslemeli bir karma tablosu

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 20 / 31

9 89 89 89 89 89

8 18 18 18 18

7

6 49 49 49

5

4

3 58 58

2

1

0 69

Karma Tablosu Islemleri (Dizi)

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 21 / 31

Arama: O(1) Ekleme: O(1) Silme: O(1)

Tekrar Karma

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 22 / 31

nceki sekildeki karma tablosunun tekrarkarlmas

Karma Tablosu

Bagl Liste ile KarmaTablosu Tanm

Ak Adresleme

Tekrar Karma

Uygulama: HedefTahtas

Uygulama: KarmaDizini

O. T. Yldz, C && Java ile Veri Yaplarna Giris, Bogazii niversitesi Yaynevi, 2013 23 / 3113

12

11 11

10

9 9

8

7

6 76

5

4

3 423

2

1 71