Bağlı Liste. Tablo 2.1: Bir dizinin k nıncı elemanını silen algoritma

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Bağlı Liste. Tablo 2.1: Bir dizinin k nıncı elemanını silen algoritma"

Transkript

1 2 Bağlı Liste Bağlı liste, içindeki elemanların doğrusal olarak düzenlendiği veri yapısıdır. Bu yönüyle dizilere benzeyen bağlı liste, içindeki elemanlara ulaşma yoluyla diziden ayrılmaktadır. Bir dizinin içindeki elemanlara dizinin indeksleri yoluyla ulaşıldığı halde, bir bağlı listenin içindeki elemanlara o elemanlara işaret eden işaretçiler yoluyla ulaşılır. Bağlı listelerde eleman ekleme ve silme işlemleri dizilere göre daha hızlı yapılabilmektedir. Diziye bir eleman eklemek veya diziden bir eleman silmek için dizinin elemanlarını kaydırmak gerekirken, bağlı listeler, veriyi dinamik olarak sakladıklarından dolayı sadece birkaç bağlantının yerini değiştirmek bu işlemler için yeterlidir. Tablo 2.1: Bir dizinin k nıncı elemanını silen algoritma void diziden_sil ( int dizi, int k, int N){ int i; for (i = k; i < N 1; i++){ dizi [ i ] = dizi [ i + 1]; void dizidensil(int[] dizi, int k){ int i; for (i = k; i < dizi.length 1; i++){ dizi [ i ] = dizi[ i + 1]; Örneğin Tablo 2.1 deki kod parçası N elemanlı bir dizideki k nıncı elemanı diziden siler. Ortaya çıkan boşluğu gidermek için k nıncı elemandan sonraki her eleman bir önceki pozisyona kaydırılacaktır (Satır 4). Bu da N - k elemanın pozisyon değiştirmesi anlamına gelir. Oysa bu bölümde göreceğimiz gibi bağlı listeden bir eleman silindiğinde yapılması gereken tek şey, bir işaretçinin gösterdiği yerin değiştirilmesidir. O halde dizi veri yapısından belirli bir elemanı silmek N - k işlem gerektirirken bağlı liste yapısından belirli bir elemanı silmek 2 işlem gerektirmektedir. N - k büyük olduğunda aradaki fark çalışma süresine yansıyacaktır.

2 20 Bölüm 2. Bağlı Liste Tablo 2.2: Bir dizinin k nıncı yerine yeni eleman ekleyen algoritma 1 void diziye_ekle ( int dizi, int k, int yeni, int N){ 2 int i; 3 for (i = N 2; i >= k; i ){ 4 dizi [ i + 1] = dizi [ i ]; 5 6 dizi [k] = yeni; 7 1 void diziyeekle(int[] dizi, int k, int yeni){ 2 int i; 3 for (i = dizi.length 2; i >= k; i ){ 4 dizi[i + 1] = dizi[i ]; 5 6 dizi[k] = yeni; 7 Tablo 2.3: Sıralı bir dizide ikili arama yöntemiyle k sayısını arayan algoritma void dizide_ara( int dizi, int k, int N){ int sol = 0, sag = N 1, orta; orta = (sol + sag) / 2; while (sol <= sag){ if (k < dizi [ orta ]) sag = orta 1; else if (k > dizi [orta ]) sol = orta + 1; else return orta ; orta = (sol + sag) / 2; return 1; void dizideara(int[] dizi, int k){ int sol = 0, sag = dizi.length 1, orta; orta = (sol + sag) / 2; while (sol <= sag){ if (k < dizi[orta ]) sag = orta 1; else if (k > dizi[orta ]) sol = orta + 1; else return orta; orta = (sol + sag) / 2; return 1; Benzer bir durum diziye yeni bir eleman eklerken de geçerlidir. Örneğin Tablo 2.2 deki kod parçası N elemanlı bir dizinin k nıncı yerine yeni bir eleman ekler. Yeni elemanı yerleştirmek için gereken boşluğu elde etmek için k nıncı elemandan itibaren her eleman bir sonraki yere kaydırılacaktır (Satır 4).Bu da N - k elemanın yer değiştirmesi anlamına gelir. Oysa bu bölümde göreceğimiz gibi bağlı listeye bir eleman eklendiğinde yapılması gereken tek şey bir işaretçinin gösterdiği yerin değiştirilmesidir. O halde dizi veri yapısına yeni bir eleman eklemek N - k işlem gerektirirken bağlı liste yapısına yeni bir eleman eklemek 2işlemgerektirmektedir. Diğer taraftan sıralı bir dizide verilen bir elemanı aramak, ikili arama yöntemi ile O(log N) zamanalırken(tablo2.3),bağlılistelerdeaynıişlemancak bütün elemanlar gezilerek yapılabilir O(N).

3 2.1. Bağlı Liste Tanımı Bağlı Liste Tanımı Bir bağlı listenin her elemanı bir veri yapısı ile tanımlanır. Listedeki her elemanın bir içeriği ve sonraki elemanı işaret eden bir işaretçisi vardır. Şekil 2.1 örnek bir bağlı liste elemanını göstermektedir. Bu eleman 9 değerini ve bir sonraki elemanı gösteren bir işaretçiyi içermektedir. İçerik İleri 9 Şekil 2.1: Tam sayı içeren eleman veri yapısı Tablo 2.4: Tam sayı içeren eleman veri yapısı tanımı struct eleman{ int icerik ; struct eleman ileri ; ; typedef struct eleman Eleman; typedef Eleman Elemanptr; Elemanptr yeni_eleman(int icerik ){ Elemanptr eleman; eleman = malloc(sizeof(eleman)); eleman >icerik = icerik; eleman >ileri = NULL; return eleman; public class Eleman{ int icerik ; Eleman ileri ; public Eleman(int icerik){ this.icerik = icerik ; ileri = null; Tablo 2.4 te veri olarak tamsayı içeren bir elemanın tanımı verilmektedir. Listenin her bir elemanı struct eleman adlı bir yapı ile gösterilmektedir. icerik alanı listedeki elemanın içindeki veriyi, ileri alanı ise bağlı listede bir sonraki elemanı gösteren işaretçidir. Örnek bir bağlı liste ve onun eşleniği dizi Şekil 2.2 de görülmektedir. Şekildeki liste başı işareti listenin ilk elemanını göstermekte, dizilere ulaşmak için nasıl dizilerin başlangıç adresleri kullanılıyorsa, bağlı listeler için de bu liste başı işaretleri kullanılmaktadır. Liste başı işaretçisi NULL ise, bağlı liste boş olmakta ve hiçbir eleman içermemektedir. Bağlı listenin son elemanını gösteren liste sonu işaretçisi,

4 22 Bölüm 2. Bağlı Liste BAĞLI LİSTE Liste Başı DİZİ Liste Sonu Şekil 2.2: Bir bağlı liste ve dizi yapısı Tablo 2.5: Tam sayılar içeren bağlı liste tanımı struct liste { Elemanptr bas; Elemanptr son; ; typedef struct liste Liste ; typedef Liste Listeptr ; Listeptr yeni_liste (){ Listeptr liste ; liste = malloc( sizeof ( Liste )); liste >bas = NULL; liste >son = NULL; return liste ; public class Liste{ Eleman bas; Eleman son; public Liste(){ bas = null; son = null; dizinin sonuna bir eleman eklerken kullanılmaktadır. Bağlı listeninsonelemanının sonraki elemanı gösteren işaretçisi NULL, yani hiçbir şeyi göstermemektedir. Tablo 2.5 te tamsayılar içeren bir bağlı listenin tanımı verilmektedir. Listenin kendisi bir ilk eleman ve son elemandan oluşan bir struct liste dir. bas alanı listenin ilk elemanını, son alanı ise listenin son elemanını göstermektedir. typedef ile verilen tanımlar ise uzun değişken tanımlarını kısaltabilmek amacıyla kullanılmaktadır. Bir bağlı liste ilk üretildiği zaman bas ve son değişkenleri NULL değerine eşitlenir.

5 2.2. Temel Bağlı Liste İşlemleri Temel Bağlı Liste İşlemleri Listeye Eleman Ekleme Bağlı listeye eleman eklemek üç şekilde olabilir: Listenin başına, sonuna veya ortasına ekleme. Listenin Başına Eleman Ekleme Tablo 2.6 da verilen algoritma, l listesinin başına yeni elemanı ekler. Listenin başına eleman eklendiğinde bas değişkeni yeni eleman olur (Satır 5). Ayrıca listenin eski ilk elemanını yeni elemanın arkasına yerleştirmek gereklidir (Satır 4). Liste boş ise listenin son elemanı da yeni eleman yapılır (Satır 2-3). Tablo 2.6: Bağlı listenin başına eleman ekleyen algoritma 1 void liste_basina_ekle ( Listeptr l, Elemanptr yeni){ 2 if (l >son == NULL) 3 l >son = yeni; 4 yeni >ileri = l >bas; 5 l >bas = yeni; 6 1 void listebasinaekle(eleman yeni){ 2 if (son == null) 3 son = yeni; 4 yeni. ileri = bas; 5 bas = yeni; 6 Şekil 2.3 te üç elemandan oluşan bir bağlı listenin başına içeriği 8 olan bir eleman eklenmiştir. bas değişkeni artık içeriği 9 olan elemanı değil yeni eklediğimiz elemanı göstermektedir. Ayrıca yeni eklediğimiz elemanın ileri işaretçisi 9 u göstermektedir. Listenin Sonuna Eleman Ekleme Tablo 2.7 de verilen algoritma, l listesinin sonuna yeni elemanı ekler. Listenin sonuna ekleme yapmak için yeni elemanı listenin son elemanının arkasına eklemek (Satır 4) ve listenin son elemanını gösteren işaretçinin de yeni elemanı göstermesini sağlamak yeterlidir (Satır 5). Eğer liste boşsa, listenin ilk elemanını gösteren işaretçi de yeni elemanı gösterecektir (Satır 2-3). Şekil 2.4 te üç elemandan oluşan bir bağlı listenin sonuna içeriği 8 olan bir eleman eklenmiştir. son değişkeni artık içeriği 5 olan elemanı değil yeni eklediğimiz

6 24 Bölüm 2. Bağlı Liste Liste Başı Yeni 8 Liste Sonu Şekil 2.3: Bağlı listenin başına ekleme Tablo 2.7: Bağlı listenin sonuna eleman ekleyen algoritma 1 void listeye_ekle ( Listeptr l, Elemanptr yeni){ 2 if (l >bas == NULL) 3 l >bas = yeni; 4 else 5 l >son >ileri = yeni; 6 l >son = yeni; 7 1 void listeyeekle(eleman yeni){ 2 if (bas == null) 3 bas = yeni; 4 else 5 son. ileri = yeni; 6 son = yeni; 7 elemanı göstermektedir. Ayrıca içeriği 5 olan elemanın ileri işaretçisi artık NULL ı değil yeni eklediğimiz elemanı göstermektedir. Listenin Ortasına Eleman Ekleme Listenin ortasına bir eleman eklemek için yeni elemandan önce gelen elemanın adresi bilinmelidir. Yeni elemandan önce gelen elemanın ileri işaretçisi yeni eklenen elemanı gösterecektir. Tablo 2.8 deki algoritmada yeni eklenen elemanı, once yeni elemandan önce

7 2.2. Temel Bağlı Liste İşlemleri 25 Liste Başı Yeni 8 Liste Sonu Şekil 2.4: Bağlı listenin sonuna ekleme Tablo 2.8: Bağlı listenin ortasına eleman ekleyen algoritma 1 void liste_orta_ekle (Elemanptr yeni, Elemanptr once){ 2 yeni >ileri = once >ileri; 3 once >ileri = yeni; 4 1 void listeortaekle(eleman yeni, Eleman once){ 2 yeni. ileri = once.ileri ; 3 once. ileri = yeni; 4 gelecek elemanı göstermektedir. Yeni elemanın ileri işaretçisi once elemanından sonra gelen elemanı gösterecek şekilde (Satır 2), önce gelen elemanınileri işaretçisi ise yeni gelen elemanı gösterecek şekilde değiştirilmektedir (Satır 3). Şekil 2.5 te içeriği 8 olan bir eleman içeriği 16 olan elemanın arkasına eklenmektedir. Değiştirilen işaretçiler: 16 nın ileri işaretçisi artık 5 i değil yeni eklenen 8 i göstermektedir. Yeni eklenen 8 in ileri işaretçisi 5 i göstermektedir.

8 26 Bölüm 2. Bağlı Liste Liste Başı Önce Yeni 8 Liste Sonu Şekil 2.5: Bağlı listenin ortasına ekleme Bağlı Liste İşlemleri Liste başına ekleme: O(1) Liste sonuna ekleme: O(1) Liste ortasına ekleme: O(1) Listede Eleman Arama Bağlı listelerde yaptığımız bir diğer işlem, elimizdeki bir değerinlisteniniçinde olup olmadığının araştırılmasıdır. Arama yaparken önce listenin ilk elemanından başlanır ve bir elemandan diğerine işaretçiler yardımıyla ilerleyerek her elemanın içeriğiyle aradığımız değer karşılaştırılır. Değerler aynıysa aranan eleman bulunmuş demektir. Tablo 2.9 daki algoritma bu arama işlemini yapmaktadır. Fonksiyon, aranan değer listede varsa değeri içeren elemanı, yoksa NULL değerini döndürür Listenin i ninci Elemanını Getirme Verilen bir bağlı listedeki i ninci elemanı döndüren algoritma Tablo 2.10 da verilmiştir. Bağlı listelerin dezavantajını burada görüyoruz. Dizi veri yapısında i ninci elemana erişmek için sadece o elemanın sıra numarasını belirtmek yeterliyken, bağlı liste veri yapısında listenin başından o sıra numarasına gelene kadar listeyi gezmek gerekir.

9 2.2. Temel Bağlı Liste İşlemleri 27 Tablo 2.9: Bağlı listede verilen bir değeri arama 1 Elemanptr liste_ara ( Listeptr l, int deger){ 2 Elemanptr tmp; 3 tmp = l >bas; 4 while (tmp){ 5 if (tmp >icerik == deger) 6 return tmp; 7 tmp = tmp >ileri; 8 9 return NULL; 10 Eleman listeara(int deger){ Eleman tmp; tmp = bas; while (tmp!= null){ if (tmp.icerik == deger) return tmp; tmp = tmp.ileri; return null; Tablo 2.10: Bağlı listenin i ninci elemanını döndürme 1 Elemanptr eleman_i(listeptr l, int i){ 2 Elemanptr tmp = l >bas; 3 int j = 0; 4 while (tmp!= NULL && j < i){ 5 j++; 6 tmp = tmp >ileri; 7 8 return tmp; 9 Eleman elemani(int i){ Eleman tmp = bas; int j=0; while (tmp!= null && j < i){ j++; tmp = tmp.ileri; return tmp; Liste gezilirken her geçilen eleman için sıra numarası bir artırılır (Satır 5-6). Gezinti iki şekilde sonra erebilir: (i) listede i elemandan daha az eleman varsa (Satır 4 teki ilk koşul yanlış olur) (ii) ya da i ninci sayı bulunmuşsa (i= j olduğunda Satır 3 teki ikinci koşul yanlış olur). Birinci durumda fonksiyon i ninci eleman olmadığından fonksiyon NULL döndürür. İkinci durumda da fonksiyon i ninci elemanı, yani tmp i döndürür. Listede arama: O(N) Bağlı Liste İşlemleri i ninci elemanı getirme: O(N) Listeden Eleman Silme Bağlı listeye eleman eklemede olduğu gibi bağlı listeden eleman silerken de üç değişik durum söz konusu olabilir. Silinecek eleman listenin ilk elemanı, son elemanı veya listenin ortasındaki herhangi bir eleman olabilir.

10 28 Bölüm 2. Bağlı Liste Listenin İlk Elemanını Silme Tablo 2.11 de verilen algoritma, l listesinin ilk elemanını siler. Listenin ilk elemanı silindiğinde bas değişkeni listenin başından sonraki eleman (ikinci eleman) olur (Satır 2). İlk eleman silindiğinde liste boşalırsa (Satır 3), listenin son elemanı da NULL yapılır (Satır 4). Tablo 2.11: Bağlı listenin ilk elemanını silme 1 void liste_basi_sil ( Listeptr l){ 2 l >bas = l >bas >ileri; 3 if (l >bas == NULL) 4 l >son = NULL; 5 void listebasisil (){ bas = bas. ileri ; if (bas == null) son = null; Liste Başı Liste Sonu Şekil 2.6: Bağlı listenin ilk elemanını silme Şekil 2.6 listenin ilk elemanını silme işlemini göstermektedir. Listeninbaşı artık 9 u değil 9 un ileri işaretçisinin gösterdiği 16 yı göstermektedir. Listenin Son Elemanını Silme Bağlı listede son elemanı sildiğimizde, listenin yeni son elemanının belirlenmesi gerekir. Elimizdeki bağlantılar ile sadece ileriye doğru gittiğimizden, listenin sondan bir önceki elemanına direkt erişimimiz yoktur. Bu sebepten, önce listenin sondan

11 2.2. Temel Bağlı Liste İşlemleri 29 bir önceki elemanını bulmamız ve daha sonra bağlantıları ona göre düzeltmemiz gerekir. Tablo 2.12: Bağlı listenin son elemanını silme 1 void liste_sonu_sil ( Listeptr l){ 2 Elemanptr tmp, once; 3 tmp = l >bas; 4 once = NULL; 5 while (tmp!= l >son){ 6 once = tmp; 7 tmp = tmp >ileri; 8 9 if (once == NULL) 10 l >bas = NULL; 11 else 12 once >ileri = NULL; 13 l >son = once; 14 void listesonusil(){ Eleman tmp, once; tmp = bas; once = null; while (tmp!= son){ once = tmp; tmp = tmp.ileri; if (once == null) bas = null; else once. ileri = null; son = once; Liste Başı Önce Liste Sonu Şekil 2.7: Bağlı listenin son elemanını silme Tablo 2.12 deki fonksiyon, verilen bir listenin son elemanını silmektedir. Önce, listenin sondan bir önceki elemanı bulunur (Satır 3-8). Sırayla listede ilerlerken hem listenin şu andaki elemanını gösteren bir işaretçi (tmp) hem de o elemanın bir önündeki elemanı gösteren bir işaretçi (elemanonce) hafızada tutulur.listenin sonuna gelindiğinde elemanonce listenin sondan bir önceki elemanını gösterecektir.

12 30 Bölüm 2. Bağlı Liste Eğer listede tek bir eleman varsa (Satır 9), son eleman silindiğinde tüm elemanlar silinmiş olacak ve listenin başını gösteren işaretçi NULL a eşitlenecektir (Satır 10). Listede birden fazla eleman varsa (Satır 11), listenin son elemanı elemanonce olacak (Satır 13) ve listenin yeni son elemanının ileri işaretçisi NULL u gösterecektir (Satır 12). Şekil 2.7 listenin son elemanını silme işlemini göstermektedir. Listenin sonu artık 7 yi değil 7 den önce gelen 5 i göstermektedir. Listenin Ortasından Eleman Silme Bağlı listeden silinecek elemanın içeriği ya da o elemanı gösteren bir işaretçi verilirse silme işlemi kolayca yapılabilir. Elemanın içeriği verilirse,elemanıgösteren işaretçi Bölüm de verilen arama fonksiyonu ile bulunabilir. Bağlılistede adresi verilenelemanı sildiğimizde, o elemandan önce gelen elemanın ileri işaretçisinin sildiğimiz elemandan sonra gelen elemanı göstermesi gerekir. Ama biz elimizdeki bağlantılar ile sadece listede ileri doğru hareket edebiliyoruz. Bu sebepten, önce sileceğimiz elemandan önce gelen elemanı bulmamız ve daha sonra bağlantıları ona göre düzeltmemiz gerekiyor. Tablo 2.13: Bağlı listenin ortasından bir elemanı silme 1 void listeden_sil ( Listeptr l, Elemanptr s){ 2 Elemanptr tmp, elemanonce; 3 tmp = l >bas; 4 elemanonce = NULL; 5 while (tmp!= s){ 6 elemanonce = tmp; 7 tmp = tmp >ileri; 8 9 elemanonce >ileri = s >ileri; 10 void listedensil(eleman s){ Eleman tmp, elemanonce; tmp = bas; elemanonce = null; while (tmp!= s){ elemanonce = tmp; tmp = tmp.ileri; elemanonce. ileri = s. ileri ; Tablo 2.13 te verilen fonksiyon istenen işlemi yerine getirmektedir. Önce listede silinecek elemandan önce gelen eleman bulunur (Satır 3-8). Bunun için listede sırayla ilerlerken hem listenin şu andaki elemanını gösteren bir işaretçi (tmp) hem de o elemanın bir önündeki elemanı gösteren bir işaretçi (elemanonce) hafızada tutulur. tmp silinecek elemanı gösterdiğinde elemanonce de silinecek elemandan bir önceki elemanı gösterecektir. Eğer silinecek eleman listede yoksa fonksiyondan çıkılır. Silinecek eleman bulunduğunda elemanonce nin ileri işaretçisi silinecek elemandan bir sonraki elemanı gösterecek şekilde değiştirilir (Satır 9). Şekil 2.8 içeriği 5 olan elemanın silinme işlemini göstermektedir. 16 nın ileri işaretçisi artık 5 i değil silinen 5 ten sonra gelen 7 yi göstermektedir.

13 2.2. Temel Bağlı Liste İşlemleri 31 Liste Başı Önce Liste Sonu Şekil 2.8: Bağlı listenin ortasından silme Bağlı Liste İşlemleri Listenin ilk elemanını silme: O(1) Listenin son elemanını silme: O(N) Listenin ortasından silme: O(N) Listedeki Eleman Sayısını Bulma Bağlı listede sık sık karşılaştığımız problemlerden birisi listedetoplamkaçeleman olduğunu bulmaktır. Listedeki eleman sayısını bulan fonksiyon Tablo 2.14 te verilmektedir. Fonksiyon, listeyi parametre olarak almakta ve listedeki eleman sayısını döndürmektedir. Listenin eleman sayısını bulmak için yapmamız gereken, listenin başından (Satır 4) başlayıp işaretçiler yardımıyla son elemana kadar (Satır 5) ilerlemektir. İlerleme sırasında geçilen her eleman için sayaç bir artırılır (Satır 7). Sayacın son değeri listedeki eleman sayısını verir (Satır 9).

14 32 Bölüm 2. Bağlı Liste Tablo 2.14: Bağlı listedeki eleman sayısını bulma 1 int eleman_sayisi( Listeptr l ){ 2 int sayac = 0; 3 Elemanptr tmp; 4 tmp = l >bas; 5 while (tmp){ 6 tmp = tmp >ileri; 7 sayac++; 8 9 return sayac; 10 int elemansayisi(){ int sayac = 0; Eleman tmp; tmp = bas; while (tmp!= null){ tmp = tmp.ileri; sayac++; return sayac; 2.3 İki Listeyi Birleştirme Karşımıza sık sık çıkan problemlerden biri de verilen iki listenin birleştirilmesidir. Yeni listenin elemanları ya eski iki listenin elemanlarından oluşur ya da birleştirilen listelerdeki elemanlar daha sonra kullanılacağı için o listelerdeki elemanların bir kopyası çıkarılıp yeni birleştirilmiş liste üretilir. Biz bu bölümde birinci durumu inceleyeceğiz. Bu durumda iki listedeki elemanların yeni kopyalarının üretilmesine gerek yoktur. Birleştirme, birinci listenin arkasına ikinci listenin ilk elemanının eklenmesi ile kolayca gerçekleştirilir. Tablo 2.15: İki bağlı listeyi birleştirme 1 Listeptr birlestir ( Listeptr l1, Listeptr l2){ 2 Listeptr tmp; 3 if (l1 >bas == NULL) 4 return l2 ; 5 if (l2 >bas == NULL) 6 return l1 ; 7 tmp = (Listeptr) malloc ( sizeof ( Liste )); 8 tmp >bas = l1 >bas; 9 tmp >son = l2 >son; 10 l1 >son >ileri = l2 >bas; 11 return tmp; 12 Liste birlestir ( Liste l1, Liste l2){ Liste tmp; if (l1.bas == null) return l2; if (l2.bas == null) return l1; tmp = new Liste(); tmp.bas = l1.bas; tmp.son = l2.son; l1.son. ileri = l2.bas; return tmp; Tablo 2.15 te verilen algoritma, iki listeyi birleştirmekte ve sonuç listeyi döndürmektedir. Yeni liste fonksiyonun içinde yaratılacağından onun için hafızada yer açmak gerekmektedir. Fonksiyon, önce iki listenin boş olup olmadığını kontrol etmekte (Satır 3, 5), eğer listelerden biri boşsa diğer listeyi döndürmektedir (Satır 4, 6). Eğer iki liste de en az bir eleman içeriyorsa, sonuç liste yaratılmakta (Satır 7), sonuç listenin

15 2.4. Çift Bağlı Liste Tanımı Liste Başı Liste Başı 1. Liste Sonu 3. Liste Sonu 2. Liste Başı Liste Sonu Şekil 2.9: Bağlı listeleri birleştirme ilk elemanı birinci listenin ilk elemanını göstermekte (Satır 8), son elemanı ikinci listenin son elemanını göstermekte (Satır 9) ve birinci listenin son elemanının sonraki elemanı gösteren işaretçisi ise NULL değerinden ikinci listeninilkelemanını gösterecek şekilde değiştirilmektedir (Satır 10). Şekil 2.9 da iki listenin birleştirilmesi gösterilmiştir. Birinci liste 9 ve 16 dan oluşmakta, ikinci liste ise8 ve4 ten oluşmaktadır. Sonuçlistenin ilk elemanı birinci listenin ilk elemanı, yani 9, son elemanı ise ikinci listenin son elemanı, yani 4 olmaktadır. 2.4 Çift Bağlı Liste Tanımı Bağlı liste veri yapısı, dizi veri yapısına göre ekleme ve silme işlemlerinde sabit zaman harcama gibi önemli üstünlükler taşımasına rağmen önemli bir dezavantajı da içerisinde barındırmaktadır: bağlı listede bulunduğumuz yerden sadece ileri doğru gidebiliriz. Bu dezavantaj, bağlı listedeki şu temel işlemlerde kendini göstermektedir: Bağlı listenin ortasına eleman eklemek (Tablo 2.8) ancak ve ancak önüne ekleyeceğimiz elemandan önceki elemanın işaretçisi elimizdeyken mümkün olabilir. Önceki elemanı gösteren işaretçi elimizde yoksa, listeninbaşından başlayıp ekleyeceğimiz yere kadar listede ilerlememiz gerekir.

16 34 Bölüm 2. Bağlı Liste Bağlı listenin son elemanını sildiğimizde (Tablo 2.12), bağlı listenin yeni son elemanını belirlemek için listenin başından başlayıp sondan bir önceki elemana kadar listede ilerlememiz gerekir. Bağlı listenin ortasından eleman silmek (Tablo 2.13) ancak ve ancak sileceğimiz elemandan önceki elemanın işaretçisi elimizdeyken mümkün olabilir. Önceki elemanı gösteren işaretçi elimizde yoksa, listenin başından başlayıp sileceğimiz elemana kadar listede ilerlememiz gerekir. Bütün bu dezavantajlar, her elemana bir önceki elemanını gösteren yeni bir işaretçi ekleyerek ortadan kaldırılabilir. Her elemanının bir değil iki işaretçisi olan bu bağlı liste yapısı, çift bağlı liste olarak adlandırılır. Çift bağlı listede her elemanın bir sonraki elemanı işaret eden ileri işaretçisinin yanında bir önceki elemanı işaret eden geri işaretçisi de vardır. Çift bağlı listenin ortasına eleman eklemek için (Tablo 2.20) önüne ekleyeceğimiz elemanı gösteren işaretçi yeterlidir. Ekleyeceğimiz elemanınönündeki elemanı geri işaretçisini kullanarak bulabiliriz. Çift bağlı listenin son elemanını sildiğimizde (Tablo 2.22), çift bağlı listenin yeni son elemanı önceki son elemanın geri işaretçisi ile gösterdiği eleman olacaktır. Çift bağlı listenin ortasından eleman silmek için (Tablo 2.23) sadece sileceğimiz elemanın elimizde olması yeterlidir. Sileceğimiz elemanın önündeki elemana yine geri işaretçisini kullanarak ulaşabiliriz. Örnek bir çift bağlıliste elemanı Şekil 2.10 dagörülmektedir. Buna göre bu eleman 9 değerini, bir sonraki elemanı gösteren ileri işaretçisini ve bir önceki elemanı gösteren geri işaretçisini içermektedir. Geri İçerik İleri 9 Şekil 2.10: Tam sayı içeren eleman veri yapısı (Çift bağlı liste için) Tablo 2.16 da tamsayı içeren bir çift bağlı liste elemanının tanımı verilmektedir. Listenin her bir elemanı struct eleman adlı bir yapı ile gösterilmektedir. icerik alanı listedeki elemanın içindeki veriyi, ileri alanı çift bağlı listede bir sonraki

17 2.4. Çift Bağlı Liste Tanımı 35 Tablo 2.16: Tam sayı içeren bir eleman tanımı (Çift bağlı liste için) struct cifteleman { int icerik ; struct cifteleman ileri ; struct cifteleman geri ; ; typedef struct cifteleman Cifteleman; typedef Cifteleman Ciftelemanptr ; Ciftelemanptr yeni_cifteleman( int icerik ){ Ciftelemanptr eleman; eleman = malloc(sizeof(cifteleman )); eleman >icerik = icerik; eleman >ileri = NULL; eleman >geri = NULL; return eleman; public class CiftEleman{ int icerik ; CiftEleman ileri ; CiftEleman geri; public CiftEleman(int icerik){ this.icerik = icerik ; ileri = null; geri = null; ÇİFT BAĞLI LİSTE Liste Başı DİZİ Liste Sonu Şekil 2.11: Bir çift bağlı liste ve dizi yapısı elemanı gösteren işaretçiyi, geri ise listede bir önceki elemanı gösteren işaretçiyi göstermektedir. Örnek bir çift bağlı liste ve onun eşleniği dizi Şekil 2.11 de görülmektedir. Buna göre örnek bağlı listenin ilk elemanı 9 değerini, bir sonraki eleman olan 16 yı gösteren bir işaretçiyi ve listenin ilk elemanının öncesi olmadığı için de geri işaretçisi NULL u içermektedir. Çift bağlı listede de son elemanı gösteren liste sonu işaretçisi, dizinin sonuna bir eleman eklerken kullanılmaktadır. Çift bağlı listenin son elemanının sonraki elemanı gösteren işaretçisi NULL u göstermektedir. Ayrıca liste başı ile liste sonu işaretleri normal bağlı liste ile aynıdır.

18 36 Bölüm 2. Bağlı Liste Tablo 2.17: Tam sayılar içeren çift bağlı liste tanımı struct ciftliste { Ciftelemanptr bas; Ciftelemanptr son; ; typedef struct ciftliste Ciftliste ; typedef Ciftliste Ciftlisteptr ; Ciftlisteptr yeni_ciftliste (){ Ciftlisteptr liste ; liste = malloc( sizeof ( Ciftliste )); liste >bas = NULL; liste >son = NULL; public class CiftListe{ CiftEleman bas; CiftEleman son; public CiftListe(){ bas = null; son = null; Tablo 2.17 de tamsayılar içeren bir çift bağlı listenin tanımı verilmektedir. Listenin kendisi bir ilk eleman ve son elemandan oluşan bir struct liste dir. bas alanı listenin ilk elemanını, son alanı ise listenin son elemanını göstermektedir. Bir çift bağlı liste ilk üretildiği zaman bas ve son değişkenleri NULL değerine eşitlenir. 2.5 Temel Çift Bağlı Liste İşlemleri Listeye Eleman Ekleme Çift bağlı listeye eleman eklemek üç türlü olabilir. Listenin başına, sonuna veya ortasına ekleme. Listenin Başına Eleman Ekleme Tablo 2.18 de verilen algoritma, l çift bağlı listesinin başına yeni elemanı ekler. Listenin başına eleman eklendiğinde bas değişkeni yeni eleman olur (Satır 5). Ayrıca listenin eski ilk elemanını yeni elemanın arkasına yerleştirmek gereklidir (Satır 4). Son olarak liste boşsa, listenin son elemanını gösteren işaretçi de yeni elemanı gösterecektir (Satır 2-3). Şekil 2.12 de üç elemandan oluşan bir çift bağlı listenin başına içeriği 8 olan bir eleman eklenmiştir. Yapılan değişiklikler şu şekilde özetlenebilir: bas değişkeni artık içeriği 9 olan elemanı değil yeni eklediğimiz elemanı göstermektedir. İçeriği 9 olan elemanın geri işaretçisi artık NULL u değil yeni eklediğimiz elemanı göstermektedir. Yeni eklediğimiz elemanın ileri işaretçisi 9 u göstermektedir.

19 2.5. Temel Çift Bağlı Liste İşlemleri 37 Tablo 2.18: Çift bağlı listenin başına eleman ekleyen algoritma 1 void liste_basina_ekle ( Ciftlisteptr l, Ciftelemanptr yeni){ 2 if (l >son == NULL) 3 l >son = yeni; 4 else 5 l >bas >geri = yeni; 6 yeni >ileri = l >bas; 7 l >bas = yeni; 8 1 void listebasinaekle(cifteleman yeni){ 2 if (son == null) 3 son = yeni; 4 else 5 bas.geri = yeni; 6 yeni. ileri = bas; 7 bas = yeni; 8 Liste Başı Yeni 8 Liste Sonu Şekil 2.12: Çift bağlı listenin başına eleman ekleme Listenin Sonuna Eleman Ekleme Listenin sonuna ekleme yapmak için yeni elemanı listenin son elemanınınarkasına eklemek yeterli olacaktır. Tablo 2.19 da verilen algoritma, l listesinin sonuna yeni elemanı ekler. Eğer liste boşsa listenin ilk elemanı yeni eleman yapılır (Satır 2-3). Liste doluysa, yeni

20 38 Bölüm 2. Bağlı Liste Tablo 2.19: Çift bağlı listenin sonuna eleman ekleyen algoritma 1 void listeye_ekle ( Ciftlisteptr l, Ciftelemanptr yeni){ 2 if (l >bas == NULL) 3 l >bas = yeni; 4 else 5 l >son >ileri = yeni; 6 yeni >geri = l >son; 7 l >son = yeni; 8 1 void listeyeekle(cifteleman yeni){ 2 if (bas == null) 3 bas = yeni; 4 else 5 son. ileri = yeni; 6 yeni.geri = son; 7 son = yeni; 8 Liste Başı Yeni 8 Liste Sonu Şekil 2.13: Çift bağlı listenin sonuna eleman ekleme elemanın geri işaretçisi listenin son elemanını (Satır 4), listenin son elemanının ileri işaretçisi de yeni elemanı (Satır 5) gösterecek şekilde işaretçiler değiştirilir. Şekil 2.13 te üç elemandan oluşan bir çift bağlı listenin sonuna içeriği 8 olan bir eleman eklenmiştir. Yapılan değişiklikler şu şekilde özetlenebilir: son değişkeni artık içeriği 5 olan elemanı değil yeni eklediğimiz elemanı gös-

21 2.5. Temel Çift Bağlı Liste İşlemleri 39 Tablo 2.20: Çift bağlı listenin ortasına eleman ekleyen algoritma 1 void liste_orta_ekle (Ciftelemanptr yeni, Ciftelemanptr once){ 2 yeni >ileri = once >ileri; 3 yeni >geri = once; 4 once >ileri >geri = yeni; 5 once >ileri = yeni; 6 1 void listeortaekle(cifteleman yeni, CiftEleman once){ 2 yeni. ileri = once.ileri ; 3 yeni.geri = once; 4 once. ileri.geri = yeni; 5 once. ileri = yeni; 6 termektedir. İçeriği 5 olan elemanın ileri işaretçisi artık NULL u değil yeni eklediğimiz elemanı göstermektedir. Yeni eklediğimiz elemanın geri işaretçisi 5 i göstermektedir. Listenin Ortasına Eleman Ekleme Listenin ortasına bir eleman eklemek için yeni elemandan önce gelen elemanın adresi bilinmelidir. Yeni elemandan önce gelen elemanın ileri işaretçisi yeni eklenen elemanı, yeni elemanın geri işaretçisi ise yeni elemandan önce gelen elemanı gösterecektir. Tablo 2.20 deki algoritmada yeni yeni eklenen elemanı, once yeni elemandan önce gelecek elemanı göstermektedir. 4 işaretçi değiştirilecektir. Eklenen elemanın ileri işaretçisi once elemanından sonra gelen elemanı gösterecektir (Satır 8). Eklenen elemanın geri işaretçisi once elemanını gösterecektir (Satır 9). once elemanından sonra gelen elemanın geri işaretçisi yeni eklenen elemanı gösterecektir (Satır 10). once elemanının ileri işaretçisi yeni eklenen elemanı gösterecektir (Satır 11). Şekil 2.14 te içeriği 8 olan bir eleman, içeriği 16 olan elemanın arkasına eklenmektedir. Değiştirilen işaretçiler: 8 in ileri işaretçisi 5 i gösterecektir. 8 in geri işaretçisi 16 yı gösterecektir.

22 40 Bölüm 2. Bağlı Liste Liste Başı Yeni 8 Liste Sonu Şekil 2.14: Çift bağlı listenin ortasına eleman ekleme 5 in geri işaretçisi 8 i gösterecektir. 16 nın ileri işaretçisi 8 i gösterecektir. Çift Bağlı Liste İşlemleri Listenin başına ekleme: O(1) Listenin sonuna ekleme: O(1) Listenin ortasına ekleme: O(1) Listeden Eleman Silme Bağlı listeye eleman eklemede olduğu gibi bağlı listeden eleman silerken de üç değişik durum söz konusu olabilir. Silinecek eleman listenin ilk elemanı, son elemanı veya listenin ortasındaki herhangi bir eleman olabilir. Listenin İlk Elemanını Silme Tablo 2.21 de verilen algoritma l çift bağlı listesinin ilk elemanını siler. Listenin ilk elemanı silindiğinde bas değişkeni listenin başından sonraki eleman (ikinci eleman) olur (Satır 2). Yeni liste başının geri işaretçisi ise NULL a değiştirilir (Satır 6). İlk

23 2.5. Temel Çift Bağlı Liste İşlemleri 41 eleman silindiğinde liste boşalırsa (Satır 3), listenin son elemanıdanullyapılır (Satır 4). Tablo 2.21: Çift bağlı listenin ilk elemanını silme 1 void liste_basi_sil ( Ciftlisteptr l){ 2 l >bas = l >bas >ileri; 3 if (l >bas == NULL) 4 l >son = NULL; 5 else 6 l >bas >geri = NULL; 7 void listebasisil (){ bas = bas. ileri ; if (bas == null) son = null; else bas. geri = null; Liste Başı Liste Sonu Şekil 2.15: Bağlı listenin ilk elemanını silme Şekil 2.15 örnek bir çift bağlı listenin ilk elemanının silinme işlemini göstermektedir. Listenin başı artık 9 değil 9 un ileri işaretçisinin gösterdiği 16 dır. Ayrıca 16 nın geri işaretçisi de artık 9 u değil NULL u göstermektedir. Listenin Son Elemanını Silme Çift bağlı listede son elemanı sildiğimizde, listenin yeni son elemanının belirlenmesi gerekir. Çift bağlı listede elimizdeki bağlantılar ile hem ileriye hem de geriye doğru gittiğimizden, listenin sondan bir önceki elemanına erişmek için sadece geri işaretçisini kullanmamız yeterlidir.

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

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 Bölüm 6. Karma Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 31 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 3 Motivasyon: Neden Listeye İhtiyaç Var? Bağlı

Detaylı

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

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 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

Detaylı

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ü

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ü 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ü Dersin Planı B+ Tree Temel bir veritabanı çalışma kodu Hash (Karma) Heap Ağaçlar

Detaylı

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 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 5. Ağaç Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 73 O. T. Yıldız, C && Java ile Veri Yapılarına, Boğaziçi Üniversitesi Yayınevi,

Detaylı

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

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli Veri Modelleri Ağaç Veri Modeli Ağaç Veri Modeli Verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen bir veri modelidir. Ağaç veri modeli daha fazla bellek

Detaylı

BAĞLAÇLI LİSTELER LINKED LISTS

BAĞLAÇLI LİSTELER LINKED LISTS BAĞLAÇLI LİSTELER LINKED LISTS Liste Günlük yaşamda listeler pek çok yerde kullanılmaktadır. Alışveriş listeleri, adres listeleri, davetli listeleri gibi. Bilgisayar programlarında da listeler yararlı

Detaylı

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

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ VERİ YAPILARI LİSTELER Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ Bağlı Listeler Aynı kümeye ait veri parçalarının birbirlerine bellek üzerinde, sanal olarak bağlanmasıyla

Detaylı

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

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI YZM 2116- VERİ YAPILARI DERS#9: HASH FONKSİYONLARI İÇERİK Bu bölümde, Giriş Hash Tabloları Hash Fonksiyonu Çakışma (Collision) Ayrık Zincirleme Çözümü Linear Probing Çözümü Quadratic Probing Çözümü konusuna

Detaylı

BIL222 Veri Yapıları ve Algoritmalar

BIL222 Veri Yapıları ve Algoritmalar BIL222 Veri Yapıları ve Algoritmalar 1. ĠKĠLĠ AĞAÇLAR (BIARY TREES) Bütün düğümlerinin derecesi en fazla iki olan ağaca ikili ağaç denir. Yani bir düğüme en fazla iki tane düğüm bağlanabilir ( çocuk sayısı

Detaylı

biçimindeki ifadelere iki değişkenli polinomlar denir. Bu polinomda aynı terimdeki değişkenlerin üsleri toplamından en büyük olanına polinomun dereces

biçimindeki ifadelere iki değişkenli polinomlar denir. Bu polinomda aynı terimdeki değişkenlerin üsleri toplamından en büyük olanına polinomun dereces TANIM n bir doğal sayı ve a 0, a 1, a 2,..., a n 1, a n birer gerçel sayı olmak üzere, P(x) = a 0 + a 1 x + a 2 x 2 +... + a n 1 x n 1 +a n x n biçimindeki ifadelere x değişkenine bağlı, gerçel (reel)

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN BAĞLI LİSTELER Bağlı listeler konusuna çalışmanın bazı faydaları var. Bağlı listeler gerçek programlarda kullanılabilecek bir veri yapısıdır. Bağlı listelerin güçlü ve zayıf yönlerini

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 9 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Dizileri Fonksiyonlara Dizileri Fonksiyonlara Bir dizi argümanını fonksiyon içinde bir değer olarak kullanabilmek

Detaylı

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16 Bölüm 8. Ayrık Küme Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 16 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi

Detaylı

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ TBIL-303-01 Veri Yapıları ve Algoritmalar İki Yönlü Bağlantılı Liste Uygulaması HAZIRLAYAN

Detaylı

BAĞLAÇLI LİSTELER LINKED LISTS

BAĞLAÇLI LİSTELER LINKED LISTS BAĞLAÇLI LİSTELER LINKED LISTS Liste Günlük yaşamda listeler pek çok yerde kullanılmaktadır: Alışveriş listeleri, adres listeleri, davetli listeleri gibi. Bilgisayar programlarında da listeler yararlı

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

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

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları Max - Min Heap Öncelikli kuyruk konusunu hatırlayın. Kuyruğa sonradan eklenmesine rağmen öncelik

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I ÇOK BOYUTLU DİZİLER, YAPILAR [MULTIDIMENSIONAL ARRAYS, STRUCTURES] ÇOK BOYUTLU DİZİLER Çok boyutlu diziler tanımlayabiliriz. İki boyutta, çok boyutlu diziler bellek

Detaylı

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği Yrd. Doç. Dr. A. Burak İER Bilgisayar Mühendisliği Algoritma Analizi İçerik: Temel Kavramlar Yinelemeli ve Yinelemesiz Algoritma Analizi Asimptotik otasyonlar Temel Kavramlar Algoritma: Bir problemin çözümüne

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN BAĞLI LİSTELER Bağlı listeler konusuna çalışmanın bazı faydaları var. Bağlı listeler gerçek programlarda kullanılabilecek bir veri yapısıdır. Bağlı listelerin güçlü ve zayıf yönlerini

Detaylı

AĞAÇ-TREE VERİ YAPISI

AĞAÇ-TREE VERİ YAPISI AĞAÇ-TREE VERİ YAPISI AĞAÇ-TREE Ağaç; verileri birbirine hiyerarşik(sıradüzensel) bir biçimde sanal olarak bağlayan, doğrusal olmayan bir veri yapısıdır. Doğada bulunan biyolojik ağaçlardaki ve aile soyağacındaki

Detaylı

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir DİZİLER (ARRAYS) Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir değişken tanımlamak gereklidir. string gun1,

Detaylı

Alıştırma 1: Yineleme

Alıştırma 1: Yineleme Alıştırma 1: Yineleme Alıştırma 2: Yineleme H10->H2 çevrimini yapınız 7 2 1 3 2 1 1 1 2 0 Hafta 3: Yineleme Alıştırmaları(1) E1. (44/174) S değerini yineleme kullanarak hesap ediniz S = 1 + 2 + 3 + n Hafta3:

Detaylı

Sınav Dağılım & IMKB Endeks

Sınav Dağılım & IMKB Endeks Sınav Dağılım & IMKB Endeks Ege Üniversitesi Bilgisayar Mühendisliği Veri Yapıları Proje-1 Hüseyin YAŞAR 05-06-7657 Didem KAYALI 05-06-7669 Umut BENZER 05-06-7670 Özlem GÜRSES 05-07-8496 Sürüm: 0.2 Bölüm

Detaylı

YMT219 VERİ YAPILARI ÖDEV-1

YMT219 VERİ YAPILARI ÖDEV-1 YMT219 VERİ YAPILARI ÖDEV-1 1. İkiliBul yordamı aşağıda verilmiştir. İkiliBul yordamı A dizisi içerisinde 2 tane eşit sayı bulursa true bulamazsa false döndürmektedir. public boolean ikilibul(int[] A){

Detaylı

Sunum ve Sistematik. Bu başlıklar altında uygulamalar yaparak öğrenciye yorum, analiz, sentez yetisinin geliştirilmesi hedeflenmiştir.

Sunum ve Sistematik. Bu başlıklar altında uygulamalar yaparak öğrenciye yorum, analiz, sentez yetisinin geliştirilmesi hedeflenmiştir. Sunum ve Sistematik 1. BÖLÜM: POLİNOMLAR ALIŞTIRMALAR Bu başlık altında her bölüm kazanımlara ayrılmış, kazanımlar tek tek çözümlü temel alıştırmalar ve sorular ile taranmıştır. Özellikle bu kısmın sınıf

Detaylı

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

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 4 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan İyilik insanları birbirine bağlayan altın zincirdir. ~Goethe Hafıza Yapısı 2 Bir değişken tanımlandığında arka

Detaylı

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

Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 7 Liste ve Bağlantılı Liste Liste birbiriyle ilişkili verileri içeren bir kümedir, programlama açısından liste en basitinden bir dizi üzerinde tutulur. Dizi elemanları

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken

Detaylı

Mustafa Sezer PEHLİVAN. Yüksek İhtisas Üniversitesi Beslenme ve Diyetetik Bölümü

Mustafa Sezer PEHLİVAN. Yüksek İhtisas Üniversitesi Beslenme ve Diyetetik Bölümü * Yüksek İhtisas Üniversitesi Beslenme ve Diyetetik Bölümü SAYILAR Doğal Sayılar, Tam Sayılar, Rasyonel Sayılar, N={0,1,2,3,,n, } Z={,-3,-2,-1,0,1,2,3, } Q={p/q: p,q Z ve q 0} İrrasyonel Sayılar, I= {p/q

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi Dizilere Başlangıç Değeri Verme Dizilerde Arama

Detaylı

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu. Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html

Detaylı

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)... Array (Diziler) Array Aynı tipten çok sayıda değişken topluluğudur. Birden fazla aynı tipteki değerle işlem yapmayı kolaylaştırır. X Y Score1 Score2 40 56 Grade 40 56 80 (0) (1) (2)... (13) Array tanımlama:

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

VEKTÖR UZAYLARI 1.GİRİŞ

VEKTÖR UZAYLARI 1.GİRİŞ 1.GİRİŞ Bu bölüm lineer cebirin temelindeki cebirsel yapıya, sonlu boyutlu vektör uzayına giriş yapmaktadır. Bir vektör uzayının tanımı, elemanları skalar olarak adlandırılan herhangi bir cisim içerir.

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 8 Problem Tanımı Arama Ağaçları İkili Arama

Detaylı

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Ders 4: Diziler (Arrays( Arrays) barisgokce.com Ders 4: Diziler (Arrays( Arrays) Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Diziler Aynı tipteki bir veri gurubunun bir değişken içinde saklanmasıdır. Veriler Hafızada

Detaylı

Veri Yapıları Laboratuvarı

Veri Yapıları Laboratuvarı 2013 2014 Veri Yapıları Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. Hakan KUTUCU Lab. Sorumlusu: Arş. Gör. Caner ÖZCAN İÇİNDEKİLER Uygulama 1: Diziler ve İşaretçiler, Dinamik Bellek Ayırma... 4 1.1. Amaç

Detaylı

Algoritma ve Programlamaya Giriş

Algoritma ve Programlamaya Giriş Algoritma ve Programlamaya Giriş Algoritma Bir sorunu çözebilmek için gerekli olan sıralı ve mantıksal adımların tümüne Algoritma denir. Doğal dil ile yazılabilir. Fazlaca formal değildir. Bir algoritmada

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

1. BÖLÜM Polinomlar BÖLÜM II. Dereceden Denklemler BÖLÜM II. Dereceden Eşitsizlikler BÖLÜM Parabol

1. BÖLÜM Polinomlar BÖLÜM II. Dereceden Denklemler BÖLÜM II. Dereceden Eşitsizlikler BÖLÜM Parabol ORGANİZASYON ŞEMASI . BÖLÜM Polinomlar... 7. BÖLÜM II. Dereceden Denklemler.... BÖLÜM II. Dereceden Eşitsizlikler... 9. BÖLÜM Parabol... 5 5. BÖLÜM Trigonometri... 69 6. BÖLÜM Karmaşık Sayılar... 09 7.

Detaylı

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

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

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 5 Kuyruk VY ve ADT Basit Kuyruk (Simple Queue)

Detaylı

TAMSAYILAR. 9www.unkapani.com.tr. Z = {.., -3, -2, -1, 0, 1, 2, 3, } kümesinin her bir elemanına. a, b, c birer tamsayı olmak üzere, Burada,

TAMSAYILAR. 9www.unkapani.com.tr. Z = {.., -3, -2, -1, 0, 1, 2, 3, } kümesinin her bir elemanına. a, b, c birer tamsayı olmak üzere, Burada, TAMSAYILAR Z = {.., -, -, -, 0,,,, } kümesinin her bir elemanına tamsayı denir. Burada, + Z = {,,,...} kümesine, pozitif tamsayılar kümesi denir. Z = {...,,,,} kümesine, negatif tamsayılar kümesi denir.

Detaylı

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

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER // 5 adet ogrenci icin 8 adet sinavi // temsil etmesi icin bir ogrenci tablosu // olusturuyoruz. Bunun icin 5x8 bir matris // yaratilmasi

Detaylı

İ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İ

İ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İ İ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İ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 2 hafta ÖDEV NO: 5 1- BANKA

Detaylı

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

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1 Algoritmalar Arama Problemi ve Analizi Bahar 2016 Doç. Dr. Suat Özdemir 1 Arama Problemi Sıralama algoritmaları gibi arama algoritmaları da gerçek hayat bilgisayar mühendisliği problemlerinin çözümünde

Detaylı

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

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri Veri modelleri, veriler arasında ilişkisel ve sırasal düzeni gösteren kavramsal tanımlardır. Her program en azından bir veri modeline dayanır. Uygun

Detaylı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 6. BÖLÜM 2 Çok Boyutlu Diziler Çok Boyutlu Dizi 3 Bir dizi aşağıdaki gibi bildirildiğinde

Detaylı

Buna göre, eşitliği yazılabilir. sayılara rasyonel sayılar denir ve Q ile gösterilir. , -, 2 2 = 1. sayıdır. 2, 3, 5 birer irrasyonel sayıdır.

Buna göre, eşitliği yazılabilir. sayılara rasyonel sayılar denir ve Q ile gösterilir. , -, 2 2 = 1. sayıdır. 2, 3, 5 birer irrasyonel sayıdır. TEMEL KAVRAMLAR RAKAM Bir çokluk belirtmek için kullanılan sembollere rakam denir. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 sembolleri birer rakamdır. 2. TAMSAYILAR KÜMESİ Z = {..., -3, -2, -1, 0, 1, 2, 3, 4,... }

Detaylı

Görsel Programlama 1

Görsel Programlama 1 Görsel Programlama 1 1. Ekrana Hello world! yazan c# console application kodları: Console.Write("Hello world!"); 2. Ekranda ilk satıra Hello, ikinci satıra world! yazan kod: Console.WriteLine("Hello");

Detaylı

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

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

Detaylı

BILGISAYAR ARITMETIGI

BILGISAYAR ARITMETIGI 1 BILGISAYAR ARITMETIGI Sayısal bilgisayarlarda hesaplama problemlerinin sonuçlandırılması için verileri işleyen aritmetik buyruklar vardır. Bu buyruklar aritmetik hesaplamaları yaparlar ve bilgisayar

Detaylı

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

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 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 BAĞLI LİSTE KAVRAMI Derleme zamanında boyutunun bilinmesine ihtiyaç

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken

Detaylı

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir?

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? DİZİLER Tanım kümesi pozitif tam sayılar kümesi olan her fonksiyona dizi denir. Örneğin f : Z + R, f (n )=n 2 ifadesi bir dizi belirtir. Diziler, değer kümelerine göre adlandırı - lırlar. Dizinin değer

Detaylı

Ders 9: Bézout teoremi

Ders 9: Bézout teoremi Ders 9: Bézout teoremi Konikler doğrularla en fazla iki noktada kesişir. Şimdi iki koniğin kaç noktada kesiştiğini saptayalım. Bunu, çok kolay gözlemlerle başlayıp temel ve ünlü Bézout teoremini kanıtlayarak

Detaylı

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

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi Veri Yapıları Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi Hash Tabloları ve Fonksiyonları Giriş Hash Tabloları Hash Fonksiyonu Çakışma (Collision) Ayrık Zincirleme Çözümü Linear Probing

Detaylı

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

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı C++ Dersi: Nesne Tabanlı Programlama 2. Baskı ³ Bölüm 19: Standart Şablon Kütüphanesi (vector) İçerik 19.1 Standart Şablon Kütüphanesi (STL) 19.2 vector SınıK 19.3 vectortanımı 19.4 vector Elemanlarına

Detaylı

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz. Ön bilgi: Dizi tanımlayabilmeli. foreach deyimi bilinmeli. Rastgele sayılar (Random) bilinmeli. 1. Aşağıda tamsayı tipinde iki boyutlu bir dizinin nasıl tanımlandığı, bir fonksiyona parametre olarak nasıl

Detaylı

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

MAK 210 SAYISAL ANALİZ

MAK 210 SAYISAL ANALİZ MAK 210 SAYISAL ANALİZ BÖLÜM 6- İSTATİSTİK VE REGRESYON ANALİZİ Doç. Dr. Ali Rıza YILDIZ 1 İSTATİSTİK VE REGRESYON ANALİZİ Bütün noktalardan geçen bir denklem bulmak yerine noktaları temsil eden, yani

Detaylı

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR KUYRUKLAR QUEUES Doç. Dr. Aybars UĞUR Giriş Bu bölümde gerçek yaşamdaki kuyrukların bilgisayardaki gösterimleri üzerinde durulacaktır. Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların

Detaylı

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? Örnek...4 : Genel terimi w n. Örnek...1 : Örnek...5 : Genel terimi r n

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? Örnek...4 : Genel terimi w n. Örnek...1 : Örnek...5 : Genel terimi r n DİZİLER Tanım kümesi pozitif tam sayılar kümesi olan her fonksiyona dizi denir. Örneğin f : Z + R, f (n )=n 2 ifadesi bir dizi belirtir. Diziler değer kümelerine göre adlandırılırlar. Dizinin değer kümesi

Detaylı

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ AD SOYAD : TESLİM TARİHİ : OKUL NO : TESLİM SÜRESİ : 1 hafta Ödev No : 5 1. Aşağıdaki programların çıktısı

Detaylı

STACK (ÇIKIN-YIĞIN-YIĞIT) VERİ YAPISI LAST-IN-FIRST-OUT LIFO VERİ YAPISI

STACK (ÇIKIN-YIĞIN-YIĞIT) VERİ YAPISI LAST-IN-FIRST-OUT LIFO VERİ YAPISI STACK (ÇIKIN-YIĞIN-YIĞIT) VERİ YAPISI LAST-IN-FIRST-OUT LIFO VERİ YAPISI STACK (ÇIKIN-YIĞIN-YIĞIT) VERİ YAPISI Eleman ekleme(push) ve çıkarmaların(pop) en üstten (top) yapıldığı veri yapısına STACK (ÇIKIN/

Detaylı

C# Örnek Uygulamalar I

C# Örnek Uygulamalar I C# Örnek Uygulamalar I Operatörler Aşağıda verilen program parçalarının sonucunda ekranda ne yazar? Console.WriteLine(a+++b--); Console.WriteLine(a+++--b); Açıklama: (a++)+(b--) şeklinde olur. Önce a ile

Detaylı

Sayı sistemleri-hesaplamalar. Sakarya Üniversitesi

Sayı sistemleri-hesaplamalar. Sakarya Üniversitesi Sayı sistemleri-hesaplamalar Sakarya Üniversitesi Sayı Sistemleri - Hesaplamalar Tüm sayı sistemlerinde sayılarda işaret kullanılabilir. Yani pozitif ve negatif sayılarla hesaplama yapılabilir. Bu gerçek

Detaylı

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

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı

İ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İ

İ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İ İ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İ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 1 hafta Ödev No: 2 1- A)

Detaylı

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. Örnek MİB ile Adresleme. Adresleme Yöntemleri. Doğal Adresleme. İvedi Adresleme

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. Örnek MİB ile Adresleme. Adresleme Yöntemleri. Doğal Adresleme. İvedi Adresleme Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ Yrd. Doç. Dr. Şule Gündüz Öğüdücü www.cs.itu.edu.tr/~gunduz/courses/mikroisl/ İşlenenin nerde olacağını belirtmek için kullanılır. Buyruk çözme aşamasında adresleme

Detaylı

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf İçindekiler 1. Giriş... 1 1.2. c++ Programı Yapısı... 2 1.3.Using Direktifi... 5 Bölüm 2. Veri türleri, değişken kavramı, sabit ve değişken bildirimleri ve c++ da kullanımı 7 2.1. Temel veri türleri...

Detaylı

İTÜ Bilgisayar Mühendisliği Bölümü, BLG433-Bilgisayar Haberleşmesi ders notları, Dr. Sema Oktuğ

İTÜ Bilgisayar Mühendisliği Bölümü, BLG433-Bilgisayar Haberleşmesi ders notları, Dr. Sema Oktuğ Bölüm 3 : HATA SEZME TEKNİKLERİ Türkçe (İngilizce) karşılıklar Eşlik sınaması (parity check) Eşlik biti (parity bit) Çevrimli fazlalık sınaması (cyclic redundancy check) Sağnak/çoğuşma (burst) Bölüm Hedefi

Detaylı

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

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DOSYA ORGANİZASYONU ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ Çarpışma çözümleme yöntemleri Sunum planı Bağlantıları kullanarak çarpışmaların çözümlenmesi. Coalesced Hashing (Birleştirilmiş

Detaylı

Kübik Spline lar/cubic Splines

Kübik Spline lar/cubic Splines Kübik spline lar önceki metodların aksine bütün data noktalarına tek bir fonksiyon/eğri uydurmaz. Bunun yerine her çift nokta için ayrı ayrı üçüncü dereceden polinomlar uydurur. x i noktasından geçen soldaki

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

2) Aşağıda verilen işlemleri yazınız. g) ( ) 3) Aşağıda verilen işlemleri yazınız. 4) Aşağıda verilen işlemleri yazınız.

2) Aşağıda verilen işlemleri yazınız. g) ( ) 3) Aşağıda verilen işlemleri yazınız. 4) Aşağıda verilen işlemleri yazınız. 8.2. ÜSLÜ SAYILARDA İŞLEM 8.2..A ÜSLÜ SAYILARDA TOPLAMA VE ÇIKARMA İŞLEMİ 2) Aşağıda verilen işlemleri yazınız. 2 ( + 2) + ( ) 3 ( 2) + ( 2) Üslü sayılarda toplama veya çıkarma işleminde her üslü niceliğin

Detaylı

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

Çanakkale Onsekiz Mart Üniversitesi. Bilgisayar Mühendisliği Bölümü Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü Skip List(Atlamalı Liste) Veri Yapısı Seminer-30.03.2007/SkipList 1 Temel İhtiyaçlar Nelerdir? 1. Bilgisayarda verileri belirli yapıda

Detaylı

Pointers (İşaretçiler)

Pointers (İşaretçiler) Pointers (İşaretçiler) Pointers (İşaretçiler) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ile ilişkilidir. Donanımsal açıdan

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I DİZİLER (ARRAYS) Kullanıcıdan N tane tamsayı, xi, alalım ve 1. Bu sayıların ortalamasını hesaplamak isteyelim ort = 0; for (i=0; i

Detaylı

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

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe

Detaylı

ARDIŞIK SAYILAR. lab2_pc32 BERRIN_ESMA_OZGE

ARDIŞIK SAYILAR. lab2_pc32 BERRIN_ESMA_OZGE 2011 ARDIŞIK SAYILAR lab2_pc32 BERRIN_ESMA_OZGE 29.11.2011 İçindekiler bu konu 4. Sınıf müfredatında yer almaktadır... 2 ardisik sayılarda dört işlem... Hata! Yer işareti tanımlanmamış. ardisik sayilarda

Detaylı

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach() (LOOPS) while(), do-while(), for(), foreach() Döngüler (loops) while do-while for foreach while ( koşul ) işlemler; do işlemler; while (koşul ); for (başlangıç ; koşul ; arttırma) işlemler; foreach ( tip

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Bellek ve Adresleme Dinamik Bellek

Detaylı

else *on=*on+1; return gecici; } int giseyeyerlestir(struct gise*giseler) {//giseye bos olmasi durumunda yerlestirme yapiliyor...

else *on=*on+1; return gecici; } int giseyeyerlestir(struct gise*giseler) {//giseye bos olmasi durumunda yerlestirme yapiliyor... ///////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////// ALGORITMA VE PROGRAMALAMA DERSI ODEV-3 ////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////

Detaylı

EXCEL FORMÜLLER, FONKSİYONLAR

EXCEL FORMÜLLER, FONKSİYONLAR EXCEL FORMÜLLER, FONKSİYONLAR Hesaplama Operatörleri Excel de kullanılan hesaplama operatörleri, (+), (-), (*) ve (/) dir. Bu operatörler kullanılarak Excel uygulamanızda dört işlem yapabilirsiniz. Excel

Detaylı

8.Konu Vektör uzayları, Alt Uzaylar

8.Konu Vektör uzayları, Alt Uzaylar 8.Konu Vektör uzayları, Alt Uzaylar 8.1. Düzlemde vektörler Düzlemdeki her noktası ile reel sayılardan oluşan ikilisini eşleştirebiliriz. Buna P noktanın koordinatları denir. y-ekseni P x y O dan P ye

Detaylı

6. Ali her gün cebinde kalan parasının (2009) a, b ve c farklı pozitif tamsayılar, 9. x, y, z pozitif gerçek sayılar,

6. Ali her gün cebinde kalan parasının (2009) a, b ve c farklı pozitif tamsayılar, 9. x, y, z pozitif gerçek sayılar, 1. 9 2 x 2 ifadesinin açılımında sabit x terim kaç olur? A) 672 B) 84 C) 1 D) -84.E) -672 6. Ali her gün cebinde kalan parasının %20 sini harcamaktadır. Pazartesi sabahı haftalığını alan Ali ni Salı günü

Detaylı

YAPILAR (STRUCTURES)

YAPILAR (STRUCTURES) YAPILAR (STRUCTURES) Yapılar, dizilere benzeyen ancak farklı tipten verileri bir arada tutan bütün olarak tanımlanabilir. Yapıların kullanılmasının esas sebebi de budur. Yapı tipi aslında yeni bir tip

Detaylı

Matlab da Dizi ve Matrisler. Mustafa Coşar

Matlab da Dizi ve Matrisler. Mustafa Coşar Matlab da Dizi ve Matrisler Mustafa Coşar MATLAB Değişkenleri Matlab da değişkenler; skaler, dizi(vektör), matris veya metin (string) türünde olabilirler. Örnek olarak: a=1; b=-3.2e3; c=22/5; metin= mustafa

Detaylı