Ders İçeriği Liste Soyut veri yapısı (ADT)

Slides:



Advertisements
Benzer bir sunumlar
Programlama-II (Java ile Bilgisayar Programlama)
Advertisements

Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
Saatte V km hız ile giden bir aracın t zamanda aldığı yolu bulan metodu yazınız. Metodu kullanacak bir program yazınız. ( yol=hız*zaman, x=V*t) — Metot.
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Değişkenler ve bellek Değişkenler
Support.ebsco.com EBSCOhost Collection Manager Selector Accounts(Seçici Hesaplar) Kullanıcı Kılavuzu.
Listeler.
Yığın ve Kuyruk.
Ders İçeriği Bağlantılı Liste İki Yönlü Bağlantılı Liste
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
Diziler.
EDUTIME Java Day 4 Serdar TÜRKEL.
C++ STACK SINIFI.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Diziler(Arrays).
Bölüm 10 Yapılar ve Birleşimler
P AKET E RIŞIMLERI SıNıFLARıN YENIDEN KULLANıMı. P AKET ( P ACKAGE ) Paketler kütüphaneleri oluşturan elemanlardır. import java.io.BufferedReader; BufferedReader.
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
Java Programlama Koleksiyon(Collection) Sınıfları
Nesneye Yönelik Programlama Dr. Pelin GÖRGEL
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
DİZİLER (Arrays) Yrd.Doç.dr. Cİhad demİrlİ
DİZİLER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Erişim Denetimi, Fonksiyon
C# Metot Overloading (Aşırı yükleme)
Sorular? Öneriler?. Referanslar Referanslar (Tekrar) Eğer aşağıdaki gibi yazarsak ne olur: int x; double y; char c; ???
JAVADA PROGRAM DENET İ M İ VE OPERATÖRLER. int a ; a=4 ; // do ğ ru bir atama 4=a ; // yanlış bir atama!
JAVA İ LE PROGRAMLAMAYA G İ R İ Ş Ekim Dr. Galip Aydın.
Nesneye Yönelik Programlama
Görsel C# Programlama Güz 2009 (6. Hafta).
Java Sınıf ve Nesne Kavramı UML Gösterimi
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Ses Kontrol Metodlar ile ilgili son birkaç söz Tekrar: Programlama için başlıca 3 model.
Chapter 6: Using Arrays.
ÇOK BİÇİMLİLİK POLYMORPHISM
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
C# ile Seri İletişim Aslı Ergün.
EDUTIME Java Day 8 Serdar TÜRKEL.
Class KahveFincani { public KahveFincani() { System.out.println("KahveFincani..."); } } public class YapilandirciBasitOrnek { public static void main(String[]
Diziler (Arrays).
JAVA’DA DİZİLER Dr.Galip AYDIN.
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Veri.
Dizi ve ArrayList.
Sınıflar ve Nesneler Sınıf: bir nesnenin şablonunu, kalıbını, şeklini, davranışını, kalıtımını değişkenleri, metodları ve ebeveynleri vasıtasıyla tanımlar.
Trees, Vectors, Iterators. ADT Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri - Uygulamaları.
Ders 1: ARRAYLIST Hazırlayan : Yrd. Doç. Dr. Barış GÖKÇE
NESNEYE YÖNELİK PROGRAMLAMA
BAZI VERİ YAPILARI Yılmaz KILIÇASLAN. Sunu Planı Bu derste, çizgeler gibi bazı teorik nesnelerin bellekte nasıl tutulduğunu ve algoritmalarca nasıl işlendiğini.
Visual Basic Windows Programlama.
Bölüm 5 Nesneler ve Metotlar
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
JAVA PROGRAMLAMA ORNEKLER
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Veri yapıları Hafta3 Dizi Yapıları.
KUYRUK (QUEUE).
* Aynı veri türüne veya sınıfa ait birbirleri ile ilişkili veriler topluluğu. * Dizinin elemanları basit veri türüne ait veya nesneye ait olabilir. Bu.
Yığıt Soyut Veri Tipi (Stack ADT) Yığıt Veri Yapısı
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Kurucular(Yapıcılar), Yıkıcılar
Nesneye Dayalı Programlama 1
MTM216 GÖRSEL PROGRAMLAMA
Sunum transkripti:

Ders İçeriği Liste Soyut veri yapısı (ADT) Tanım ve Operasyonları Soyut veri yapısı (ADT) Tanım & fonksiyonlar Liste Gerçekleştirimi: ArrayList JAVA Koleksiyon API (Collections API) Tekrarlayıcı (Iterator) Uygulama – Java ile ArrayList Gerçekleştirimi

Liste(List) - Tanım Liste ? A1, A2, …, An şeklinde eleman dizisi. Elemanlar rastgele olabilir, fakat aynı tüde olmalı ( hepsi tamsayı (int), hepsi ondalık sayı (double) vb) Örnek 5 elemanlı liste (indis 0-4 arasında) 2, 6, 1, 2, 3 2’nin indisi 0 6’nın indisi 1 1’in indisi 2 2’nin indisi 3 3’ün indisi 4

Liste Operasyonları: ekleme Listenin sonuna yeni eleman ekleme 4, 6, 1, 4, 5  ekle(8) 4, 6, 1, 4, 5, 8 Elemanı listenin herhangi bir pozisyonuna ekleme 4, 6, 1, 4, 5  ekle(2, 9)  4, 6, 9, 1, 4, 5

Liste Operasyonları: silme Listede olan bir elemanı silme 4, 6, 1, 4, 5  sil(2) 4, 6, 4, 5 4, 6, 1, 4, 5  sil(0) 6, 1, 4, 5 4, 6, 1, 4, 5  sil(1) 4, 1, 4, 5 4, 6, 1, 4, 5  sil(4) 4, 6, 1, 4

Liste Operasyonları: indis & sonIndis indis yordamı listedeki ilk eşleşen elemanın indisini döndürür. 4, 6, 1, 4, 5  indis(6) 4, 6, 1, 4, 5  indis(5) 4, 6, 1, 4, 5  indis(4) sonIndis yordamı ise listedeki eşleşen son elemanın indisini döndürür 4, 6, 1, 4, 5  sonIndis(1)  4, 6, 1, 4, 5  sonIndis(4)  1 4 2 3

Liste Operasyonları: get & set get yordamı parametre olarak verilen indisteki değeri döndürür. 4, 6, 1, 4, 5  get(1) 6 4, 6, 1, 4, 5  get(3) 4 4, 6, 1, 4, 5  get(0) 4 set yordamı verilen indisteki değeri verilen değere atar. 4, 6, 1, 4, 5  set(1, 9)  4, 9, 1, 4, 5 4, 6, 1, 4, 5  set(3, 5)  4, 9, 1, 5, 5 4, 6, 1, 4, 5  set(4, 7)  4, 9, 1, 4, 7

Soyut Veri Tipleri (Abstract Data Type - ADT) Şimdiye kadar Soyut veri tiplerinin (ADT) operasyonlarına baktık. Operasyonlarda ADT’nin nasıl davrandığı gösterildi, fakat nasıl gerçekleştirildiği konusuna değinilmedi. Çoğu zaman ADT’yi gerçekleştirmek için birden fazla yol vardır.

Soyut Veri Tipleri (ADT) - devam Soyut veri tipleri operasyonları olan veri yapısıdır. özellik (ADT durum) … İşlemler (ADT Yordamları) islem1(…) islem2(…) islem3(…) …

Liste class Liste { … void add(int e); // sona ekle void add(int pos, int e); // belirli pozisyona ekle void remove(int pos); // sil int indexOf(int e); // baştan arama int lastIndexOf(int e); // sondan arama bool clear(); // Tüm elemanları sil bool isEmpty(); // liste boş mu? int first(); // ilk eleman int last(); // son eleman int get(int pos); // belirli pozisyondaki değer int size(); // listedeki eleman sayısı }

Liste Kullanımı Public static void main(String[] args){ List list = new List(); // boş bir liste oluştur list.add(10); // 10 list.add(5); // 10, 5 list.add(1, 7); // 10, 7, 5 list.add(2, 9); // 10, 7, 9, 5 list.indexOf(7); // 1 döndürür list.get(3); // 5 döndürür list.remove(1); // 10, 9, 5 list.size(); // 3 döndürür list.isEmpty(); // false döndürür list.remove(0); // 9, 5 list.clear(); // boş liste delete list; // Liste nesnesini sil }/* bitti-main */

Liste: Gerçekleştirim İki tür gerçekleştirim vardır: Dizi tabanlı Bağlantılı liste ADT operasyonlarının farklı gerçekleştirimlerinin çalışma zamanını karşılaştıralım.

Liste:Dizi tabanlı gerçekleştirim Temel fikir: Büyük bir dizi için yer açın (MAX) N ile ilk boş yeri tutun N = 0 ise liste boş Silme veya ekleme işleminde elemanları kaydırın. 1 2 ……… N-1 MAX A_1 A_2 A_3 A_N-1 3 A_4

ArrayList – Java ArrayList ADT class ArrayList { private int kapasite; private int elemSayisi; private int[] items; // Yapıcı yordam: // Boş liste oluştur public ArrayList(){ int[] items = new int[4]; kapasite = 4; elemSayisi = 0; } // bitti-ArrayList ArrayList (); //Yapıcı y. void add(int pos, int e); void remove(int pos); int indexOf(int e); bool isEmpty(); int first(); int last(); int get(int pos); int size(); }

Liste Operasyonları : add add(pizisyon P, ElemanTürü E) Örnek: add(2, X): X’i 2 nolu pozisyona ekle Temel Fikir: Yeni elemanı eklemek için elemanları 1 birim sağa kaydır. X eklendikten sonraki görüntü. Çalışma zamanı: O(N) 1 2 ……… N-1 MAX A_1 A_2 A_3 A_N 3 A_4 1 2 ……… N-1 MAX A_1 A_2 X A_N-1 N A_N 3 A_3

Add – Dolu Dizi Eğer dizi doluysa ne yapılabilir? Hata döndürülebilir. Tercih edilmez. Genel olarak aşağıdakiler yapılır: Daha büyük bir dizi oluştur (genellikle kapasite 2 kat arttırılır) Eski dizideki tüm elemanları yeni diziye kopyala Eski diziyi sil Yeni diziyi kullanmaya başla Bu dinamik dizi gerçekleştiriminde ayrıca kapasiteyi de kontrol altında tutulması gerekmektedir.

Liste Operasyonları: silme remove(pozisyon P) Örnek: remove(1): 1 nolu pozisyondaki elamanı sil Temel fikir: Elemanı sil ve elemanları sola bir adım kaydır. Listenin son durumu. Çalışma zamanı: O(N) 1 2 ……… N-1 MAX A_1 A_2 A_3 A_N 3 A_4 1 2 ……… N-2 MAX A_1 A_3 A_4 A_N N-1 3 A_5

Liste Operasyonları: indexOf indexOf(elemanTürü E) Örnek: indexOf(X): Listede X’i arama Doğrusal arama yapılmalı Çalışma zamanı: O(N) 1 2 ……… N-1 MAX A_1 A_2 A_3 A_N 3 A_4

Liste Operasyonları: isEmpty Eğer liste boşsa true döndür Eğer liste doluysa false döndür Eğer N == 0 ise true döndür Çalışma zamanı: O(1) 1 2 ……… N-1 MAX_SIZE A_1 A_2 A_3 A_N 3 A_4

Lists Operations: first, last, get first(): Return A[0] last(): Return A[N-1] get(pozisyon K): Return A[K] first – Running time: O(1) last – Running time: O(1) get – Running time: O(1) 1 2 ……… N-1 MAX_SIZE A_1 A_2 A_3 A_N 3 A_4

JAVA Koleksiyon (Collection) API Veri yapıları: veri üzerinde izin verilen verilerin ve operasyonların gösterilmesidir. Genel veri yapıları verileri toplar ve bu veriler üzerinde ekleme, silme, erişme gibi işlemlere izin verir. JAVA Collections API arayüzü genel veri yapılarını ve bu veri yapıları üzerinde genel işlemleri destekler.

JAVA Koleksiyon(Collections) API

JAVA Koleksiyon(Collections) API

Tekrarlayıcı (Iterator) Ö.ğ. ArrayList elemanları ekrana yazdırma. liste nesnesinin ArrayList olduğu düşünülürse for(int i=0 ; i < liste.size() ; i++) System.out.println( liste.get(i) ); Burada i iterasyon nesnemiz. Çünkü, tekrarı kontrol eden nesnemiz.

Tekrarlayıcı (Iterator) Dizideki elemanları ekrana yazdırma. Iterator i = liste.iterator(); while( i.hasNext() ) System.out.println( i.next() );

Uygulama ArrayList sınıfı gerçekleştirimi Aşağıdaki yordamları yazınız. 5 kapasiteli dizi oluşturan yapıcı yordam void add(int e); void add(int pos, int e); //isteğe bağlı void remove(int pos); //isteğe bağlı int indexOf(int e); int lastIndexOf(int e); bool clear(); //isteğe bağlı bool isEmpty(); int first(); int last(); int get(int pos); int size();