Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1 Ders İçeriği Bağlantılı Liste –Tanım ve Operasyonları İki Yönlü Bağlantılı Liste –Tanım.

Benzer bir sunumlar


... konulu sunumlar: "1 Ders İçeriği Bağlantılı Liste –Tanım ve Operasyonları İki Yönlü Bağlantılı Liste –Tanım."— Sunum transkripti:

1 1 Ders İçeriği Bağlantılı Liste –Tanım ve Operasyonları İki Yönlü Bağlantılı Liste –Tanım

2 2 Liste class Liste { … void add(int e); void add(int poz, int e); void remove(int poz); int indexOf(int e); int lastIndexOf(int e); bool clear(); bool IsEmpty(); int first(); int last(); int get(int poz); int size(); } Liste nedir? –A1, A2, …, AN şeklinde sıralı eleman dizisi

3 3 Liste Kullanımı public static void main(String[] args){ Liste liste = new Liste(); liste.add(10); // 10 liste.add(5); // 10, 5 liste.add(1, 7); // 10, 7, 5 liste.add(2, 9); // 10, 7, 9, 5 liste.indexOf(7); // Returns 1 liste.get(3); // Return 5 liste.remove(1); // 10, 9, 5 liste.size(); // Returns 3 liste.isEmpty(); // Returns false liste.remove(0); // 9, 5 liste.clear(); // boş liste }/* bitt-main */

4 4 Liste: Gerçekleştirim 2 tür gerçekleştirim var: –Dizi tabanlı - ArrayList –Bağlantılı liste - LinkedList Dersin sonunda bu iki farklı gerçekleştirimin çalışma zamanlarını karşılaştıracagız.

5 Liste: Dizi Tabanlı Gerçekleştirim Temel fikir: –Büyük bir dizi için yer açın (MAX) –N değişkeni ile ilk boş yeri tutun –N = 0 ise liste boş –Silme veya ekleme işleminde elemanları kaydırın. –Dizi doluysa ne yapılabilir? Daha büyük bir dizi için yer ayırın Eski dizideki elemanları yeni diziye kopyalayın Eski diziyi hafızadan silin Bu işlemler birçok hafıza değişimine/işlemine neden olmaktadır 012 ……… N-1 MAX_SIZE A_1A_2A_3 ……… A_N-1 3 A_4

6 Bağlantılı Liste Aynı kümeye ait veri parçalarının birbirine, bellek üzerinde, sanal olarak bağlanmasıyla oluşturulur. –Tüm veri, bir tren katarı gibi birbirine bağlı parçalardan oluşur. Bağlantılı listede birisi veri, diğeri bağlantı bilgisi olmak üzere temelde iki kısım bulunur. –Veri kısmında o uygulama için gerekli olan bilgi bulunur. –Bağlantı kısmında bağlantının nereye yapılacağını gösteren bir veya birkaç adres bilgisi bulunabilir. 6

7 Liste: Bağlantılı Liste Temel fikir: –Her eleman için bir düğüm oluşturun –Düğünler hafızada sıralı değildirler. Hafızada farklı yerlerde tutulurlar. –Her eleman kendini takip eden bir sonraki elemanın hafızadaki yerini tutar –İlk elemanın yerini tutmanız gerekir. Liste basi 4 elemanlı bir liste (düğüm) bag A_1 bag A_2 bag A_3 bag A_4 düğüm Liste sonu

8 Liste: Bitişik ve Bağlı Gerçekleştirim Hafıza A_1 A_2 A_5 A_3 A_ Adres L0 L0 + c L0 + 2c L0 + 3c L0 + 4c c bytes Hafıza A_1 Y A_5 NULL A_3 ZA_2 X A_4 W Adres T W X Y Z Bitişik Bitişik olmayan(Bağlı) Baş = T

9 son = W 9 Bağlantılı Liste: Genel Bakış Liste düğümüne genel bakış T, W, X, Y ve Z hafızada farklı yerlerdir public class Dugum { public Dugum bag; public int veri; } veri düğüm bağ bas = T A_1 A_2A_3 A_5A_4 YX Z W NULL

10 10 Bağlı Liste – Java class BagliListe { private Dugum bas; private Dugum son; private int eleSayisi; public BagliListe(){ bas=son=null; eleSayisi=0; } public void add(int poz, int e); public void remove(int poz); public int indexOf(int e); public bool isEmpty(); public int first(); public int last(); public int get(int poz); public int size();... } A_1A_2A_3A_4 NULL 012 3

11 Liste Operasyonları: add add(Pozisyon P, Eleman Türü E) –Örnek: add(2, X): 2 nolu pozisyona X elemanını ekle –Algoritma: (1) X’in nereye ekleneceğini bul (p’den sonra) (2) X elemanını içeren yeni bir düğüm oluştur (3) Düğümde bag kısmını güncelle Liste Başı bag A_1 bag A_2A_3 p NULL X düğüm bag Yeni düğüm Çalışma Zamanı? O(N) – yeri bulmak için O(1) – eklemek için 0 1 2

12 Liste Operasyonları: remove remove(Pozisyon P) –Örnek: remove(2): 2 nolu yerdeki elemanı sil –Öncelikle sileceğimiz elemanın yerini bulmamız lazım. –p ile gösterilen düğümü silebilir miyim? –Bir önceki düğümü de tutman gerekir Sileceğim düğümü bulurken bir önceki düğümü de izlemem gerekir(q değişkeni p değişkenini liste boyunca izler) –Şimdi düğümün bag kısmını güncellemem gerekiyor q.bag = p.bag Liste Başı bag A_1 bag A_2 A_4 p NULL bag A_3 q

13 Liste Operasyonları: remove remove(Pozisyon P) –Örnek: remove(2): 2 nolu yerdeki elemanı sil Liste Başı bag A_1 bag A_2 A_4 p NULL bag A_3 q Liste Başı bag A_1 bag A_2 A_4 p NULL bag A_3 q Çalışma zamanı? elemanı bulmak – O(N), silmek – O(1)

14 Liste Operasyonları: indexOf indexOf(Eleman Türü E) –Örnek: indexOf(X): listede X’i arama Doğrusal Arama yapılmalı –Çalışma zamanı: O(N) Liste başı bag A_1 bag A_2 A_4 NULL bag A_

15 Liste Operasyonları: isEmpty isEmpty() –Liste boşsa true döndür bas == NULL ise true döndür –Çalışma zamanı: O(1) Liste Başı bag A_1 bag A_2 A_4 NULL bag A_

16 Liste Operasyonları: first, last, get first() last() get(Pozisyon K) first – Çalışma zamanı: O(1) last – Çalışma zamanı: O(1) – listenin sonunu tutarsak get – Çalışma zamanı: O(N) Liste Başı bag A_1 bag A_2 A_4 NULL bag A_3 Liste sonu

17 17 Liste: Çalışma Zamanı Karşılaştırması OperasyonDizi Tabanlı ListeBağlantılı Liste addO(N)O(N) or O(1) removeO(N) indexOfO(N) isEmptyO(1) firstO(1) lastO(1) getO(1)O(N) sizeO(1)

18 Silme İşlemi Sileceğimiz düğüm elimizde zaten varsa ne yapabiliriz? –remove(Dugum p); Hala bir önceki düğümü tutmamız lazım –Bir önceki pozisyonu bulmak için çalışma zamanı O(N) –Bu işlemi daha hızlı yapabilir miyiz? –Eğer bir önceki elemanın yerini tutarsak. EVET! İki yönlü bağlantılı liste (Double Linked List) Liste başı bag A_1 bag A_2 A_4 p NULL bag A_

19 İki Yönlü Bağlantılı Liste Liste Başı once A_1 sonraonce A_2 sonra once A_3 sonra NULL public class Dugum { public Dugum once; public Dugum sonra; public int veri; } Dugum bas; Dugum son; Liste Sonu

20 İki Yönlü Bağlantılı Liste Liste Başı once A_1 sonraonce A_2 sonra once A_3 sonra NULL Liste Sonu Avantajları: remove(Dugum p)  O(1) previous(Dugum p)  O(1) Liste üzerinde ileri ve geri gitmeyi sağlar Dezavantajları: Hafıza kullanımı (her düğümde fazladan bir yer tutulması) Güncelleme işlemlerinde daha fazla işlem ve karmaşıklık


"1 Ders İçeriği Bağlantılı Liste –Tanım ve Operasyonları İki Yönlü Bağlantılı Liste –Tanım." indir ppt

Benzer bir sunumlar


Google Reklamları