ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Benzer belgeler
Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi

Ağaç (Tree) Veri Modeli

Yrd. Doç. Dr. Caner ÖZCAN

DOSYA ORGANİZASYONU. Ağaç Yapıları ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Yrd. Doç. Dr. Caner ÖZCAN

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BIP116-H14-1 BTP104-H014-1

BIL222 Veri Yapıları ve Algoritmalar

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Göstericiler (Pointers)

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Veri Yapıları Laboratuvarı

Yrd. Doç. Dr. Caner ÖZCAN

Algoritma Geliştirme ve Veri Yapıları 8 Kuyruk ve Yığın Yapısı. Mustafa Kemal Üniversitesi

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

YZM 2116 Veri Yapıları

ALGORİTMA VE PROGRAMLAMA II

Pointer Kavramı. Veri Yapıları

Çanakkale Onsekiz Mart Üniversitesi. Bilgisayar Mühendisliği Bölümü

Yrd. Doç. Dr. Caner ÖZCAN

ALGORİTMA VE PROGRAMLAMA II

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Final Sınavı Soruları Bahar 2018

YZM 2116 Veri Yapıları

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

Genel Programlama II

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

YZM 2116 Veri Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

Bilgilerin Uzun Vadeli Saklanması

BLG 312 Bilgisayar İşletim Sistemleri 2006 BLG 312. Bilgilerin Uzun Vadeli Saklanması. Dosya Sistemi Görevleri. Dosya Sistemi Özellikleri

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Yrd. Doç. Dr. Caner ÖZCAN

YZM 2116 Veri Yapıları

Genel Programlama II

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

YZM 2116 Veri Yapıları

Veri Yapıları. Ağaçlar

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

BAĞLAÇLI LİSTELER LINKED LISTS

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

YZM 2116 Veri Yapıları

Dosyalarda Farklı Yaklaşımlar. Kütük Organizasyonu 1

Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

AĞAÇLAR. Doç. Dr. Aybars UĞUR

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Arasınav Örnek Soruları Bahar 2018

YZM 2116 Veri Yapıları

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Şekil. 64 Kelimelik Yığıtın Blok Şeması

Fiziksel Veritabanı Modelleme

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

BAĞLAÇLI LİSTELER LINKED LISTS

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

ALGORİTMA VE PROGRAMLAMA I

Graf Veri Modeli. Düğümler kümesi. Kenarlar kümesi

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

VERİ YAPILARI. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ HASH TABLOLARI.

Bölüm 6. Veri Türleri ISBN

VERİ YAPILARI. GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi ÖĞR.GÖR.GÜNAY TEMÜR 1

AVL Agacı {\} /\ Suhap SAHIN Onur GÖK

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Özyineleme (Recursion)

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Eln 1002 Bilgisayar Programlama II

Ağaçlar (Trees) Ağaçlar (Trees)

ALGORİTMA VE PROGRAMLAMA II

VERİ YAPILARI VE PROGRAMLAMA

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

C++ ile Nesneye Dayalı Programlama

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

ALGORİTMA VE PROGRAMLAMA I

Yrd. Doç. Dr. Caner ÖZCAN

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

VERİ YAPILARI VE PROGRAMLAMA

Eln 1002 Bilgisayar Programlama II

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

2. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

HSancak Nesne Tabanlı Programlama I Ders Notları

Transkript:

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 VERİ YAPILARI Sunu Planı Kendini-gösteren Yapılar Dinamik Bellek Tahsisi Bağlı Listeler Yığınlar Kuyruklar Ağaçlar 1

Veri Yapıları Şu ana kadar, diziler, matrisler ve yapılar gibi, sabit büyüklükteki veri yapıları üzerinde duruldu Bu bölümde, çalışma zamanında daralıp genişleyen dinamik veri yapıları üzerinde durulacaktır. Bağlı liste: Tek bir çizgiye bağlanan elemanların listesi. Ekleme ve silinme listenin herhangi bir noktasından Yığın: Derleyici ve işletim sistemleri için önemli bir yapı. Ekleme ve silinme sondan. Kuyruk: Bekleme kuyrukları. Ekleme sondan, silinme baştan. Ağaç: Verilerin yüksek hızda aranması ve dizilmesi için. Kendini-gösteren Yapılar Kendini-gösteren yapılar, kendi tipinde bir işaretçi üyeye sahip yapıalrdır. struct node { int data; struct node *nextptr; } nextptr üyesi, link-bağ olarak da adlandırılır. Bir yapı tipindeki değişkene aynı yapı tipinde bir değişkeni bağlamak için kullanılır. Kendini gösteren yapılar, listeler, kuyruklar, yığınlar ve ağaçlar gibi veri yapılarının oluşturulmasında kullanılırlar. Kendi tipindeki son işaretçiye NULL atanarak kendini işaret etme işlemi sonlandırılabilir. 2

Dinamik Bellek Tahsisi Dinamik veri yapılarının oluşturulması ve kullanımı dinamik bellek tahsisini gerektirir. Dinamik bellek tahsisinin sınırı, teorik olarak donanımın sahip olduğu fiziksel bellek kadar veya sanal bellek sisteminde mevcut sanal bellek miktarı kadar olabilir. Fakat uygulamada durum böyle değildir, çünkü bilgisayarda eşzamanlı olarak çalışan pek çok program mevcuttur. malloc, free ve sizeof() bu aşamada kullanılacak olan en temel dinamik bellek tahsisi komutlarıdır. 3

Bağlı Listeler Bir bağlı liste, düğüm olarak adlandırılan, kendini-gösteren yapıların, işaretçilerle bağlanan dolayısıyla bağlı adının alan doğrusal bir birikimidir. Bağlı listeye, listenin ilk düğümünü gösteren bir işaretçiyle erişilebilir. Takip eden düğümlere ise: Her düğümde bulunan, bağ işaretçisi üyesiyle erişilebilir. Listenin son elemanında bulunan bağ işaretçisi, listenin sonunun geldiğini belirtmek üzere, NULL adres değerine atanır. Böylece yeni bir düğüm işaret edemez. Veri bağlı listelerde veri dinamik olarak tutulur her düğüm yalnızca ihtiyaç duyulduğu zaman oluşturulur. Bir düğüm, diğer yapılar da dahil olmak üzere herhangi bir tipte değişkeni içerebilir. Bağlı Listeler Veri listeleri dizilerde de tutulabilir, fakat bağlı listeler birkaç avantaj getirmektedirler. Bir bağlı liste, veri yapısı içerisindeki veri elemanlarının sayısı tahmin edilmez olduğunda uygundur. Bağlı listeler dinamiktir, dolayısıyla listenin uzunluğu gerektikçe azaltılır veya çoğaltılır. Bir dizinin uzunluğu, bununla birlikte, bir kere hafıza tahsisi yapıldıktan sonra değiştirilemez. Bağlı listeler, bellekte kesintisiz şekilde depolanmazlar. Fakat, mantıksal olarak düşünüldüğünde, bağlı listenin düğümleri kesintisizmiş gibi görünür. Başlangıç 17 29 93 4

5

Karakterler alfabetik sırada diziliyorlar. 6

Bir listeye sıralı şekilde düğüm ekleme *sptr oncekiptr gecerliptr yeniptr *sptr oncekiptr gecerliptr yeniptr 7

Listeden düğüm silme *sptr oncekiptr gecerliptr *sptr oncekiptr gecerliptr geciciptr Yığınlar Yığın, bağlı listenin kısıtlı bir versiyonudur. Yeni düğümlerin eklenmesi veya düğüm silinmesi yalnızca yığının tepesinden gerçekleştirilebilir. Bu sebepten dolayı yığın, son giren ilk çıkar (LIFO Last In First Out) prensibiyle çalışmaktadır. Yığına, yığının tepesini gösteren bir işaretçiyle erişilebilir. Yığının en son düğümünde bulunan bağ işaretçisi, yığının dibini göstermek üzere, NULL adres değerine eşitlenir. Yığınlar ve bağlı listeler, özdeş şekillerde gösterilirler. Bağlı listeyle yığın arasındaki fark, bağlı listelerde veri ekleme ve silme herhangi bir noktadan yapılabilir, fakat yığında bu işlem en tepede gerçekleştirilir. 8

Yığınlar Yığın işlemlerinde kullanılan temel fonksiyonlar push ve pop fonksiyonlarıdır. Push fonksiyonu yeni bir düğüm oluşturur ve yığının en tepesine yerleştirir. Pop fonksiyonu, düğümün en tepesindeki düğümü siler, ona ayrılmış belleği boşaltır ve o düğümdeki değerleri döndürür. stackptr 8 2 3 9

10

11

Push işlemi *tepeptr *yeniptr *tepeptr *yeniptr 12

Pop işlemi *tepeptr *tepeptr *geciciptr Kuyruklar Başka bir yaygın veri yapısı ise kuyruklardır. Kuyruğa düğüm eklemek ancak kuyruğun sonundan, kuyruktan düğüm silmek ise kuyruğun başından gerçekleştirilir. Bu sebepten, kuyruk ilk giren ilk çıkar (FIFO First In First Out) prensibiyle çalışmaktadır. Düğüm ekleme operasyonuna enqueue Düğüm silme operasyonuna ise dequeque adı verilmektdir. Başlangıç Son 17 29 93 13

14

15

16

Kuyruğa ekleme *basptr *sonptr *yeniptr *basptr *sonptr *yeniptr Kuyrukta Silme *basptr *sonptr *basptr *sonptr *geciciptr 17

Ağaçlar Bağlı listeler, yığın ve kuyruklar doğrusal veri yapılarıdır. Ağaçlar ise, özel yeteneklere sahip, doğrusal olmayan ikiboyutlu veri yapılarıdır. Ağaç düğümleri, iki veya daha fazla bağ içerir. Bu bölümde, binary ağaçlar üzerinde durulacaktır, yani düğümlerinin tümünde iki bağlantı olan ağaçlar (düğümleri bir veya ikisi NULL olabilir veya hiçbirisi NULL olmayabilir.) Kök düğümü, ağacın ilk düğümüdür. Kök düğümünün her bir bağlantısı alt (child) olarak adlandırılır. Sol alt düğüm, sol alt ağacın ilk düğümüdür ve sağ alt düğüm, sağ alt ağacın ilk düğümüdür. Bir düğümün altları, kardeş düğümler olarak adlandırılır. Altı olmayan düğüme ise yaprak düğümü adı verilir. 18

19

20

Binary Arama Ağacı Binary Arama Ağacı Sol alt ağaç içerisindeki değerler ailenin diğer elemanına göre daha küçüktür. Sağ alt ağaç içerisindeki değerler ailenin diğer elemanına göre daha büyüktür. Hızlı tarama imkanı sağlar. 21