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.

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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

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ı

Ö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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

Ö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ı

İÇİNDEKİLER İÇİNDEKİLER KODLAB

İÇİNDEKİLER İÇİNDEKİLER KODLAB İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

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ı

Ç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ı

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ı

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ı

Ö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ı

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ı

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ı

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ı

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

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ı

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ı

Ö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ı

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ı

Ç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ı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 2 (Denetim Yapıları, Diziler) Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Denetim Yapıları 1 if else Seçme yapısı, mantıksal

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ı

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ı

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ı

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ı

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ı

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ı

PROJE ADI: ÖZDEŞ NESNELERİN FARKLI KUTULARA DAĞILIMINDA POLİNOM KULLANIMI

PROJE ADI: ÖZDEŞ NESNELERİN FARKLI KUTULARA DAĞILIMINDA POLİNOM KULLANIMI PROJE ADI: ÖZDEŞ NESNELERİN FARKLI KUTULARA DAĞILIMINDA POLİNOM KULLANIMI PROJENİN AMACI: Polinom fonksiyon yardımıyla özdeş nesnelerin farklı kutulara istenilen koşullardaki dağılım sayısının hesaplanması

Detaylı

ÜSLÜ SAYILAR SİBEL BAŞ AKDENİZ ÜNİVERSİTESİ EĞİTİM FAK. İLKÖĞRT. MAT. ÖĞRT. 2. SINIF

ÜSLÜ SAYILAR SİBEL BAŞ AKDENİZ ÜNİVERSİTESİ EĞİTİM FAK. İLKÖĞRT. MAT. ÖĞRT. 2. SINIF ÜSLÜ SAYILAR SİBEL BAŞ 20120907010 AKDENİZ ÜNİVERSİTESİ EĞİTİM FAK. İLKÖĞRT. MAT. ÖĞRT. 2. SINIF 1 ANLATIMI ÜSLÜ SAYILAR KONU Üslü sayılar konu anlatımı içeriği; Üslü sayıların gösterimi, Negatif üslü

Detaylı

TABLO ve HÜCRE SEÇİMİ

TABLO ve HÜCRE SEÇİMİ TABLO ve HÜCRE SEÇİMİ ÇALIŞMA TABLOSU (SAYFASI) İŞLEMLERİ Tablo seçimi: Çalışma kitabında işlemler normal olarak etkin bir çalışma tablosunda yapılır. Bazı hallerde birden fazla çalışma tablosu etkin hale

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ı

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

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ CELAL BAYAR ÜNİVERSİTESİ, YAZILIM MÜHENDİSLİĞİ 2015-2016 1. Tanım Kuyruk, eleman eklemelerin sondan (rear) ve eleman çıkarmaların

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ı

JAVADA DİZİ İŞLEMLERİ

JAVADA DİZİ İŞLEMLERİ JAVADA DİZİ İŞLEMLERİ Javada diziler nesnedirler, cdeki gibi hafızada yer kaplayan pointer değillerdir. Javada diziler, cye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız.

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, Giriş Hash Tabloları Hash Fonksiyonu Çakışma (Collision)

Detaylı

MAK 210 SAYISAL ANALİZ

MAK 210 SAYISAL ANALİZ MAK 210 SAYISAL ANALİZ BÖLÜM 5- SONLU FARKLAR VE İNTERPOLASYON TEKNİKLERİ Doç. Dr. Ali Rıza YILDIZ MAK 210 - Sayısal Analiz 1 İNTERPOLASYON Tablo halinde verilen hassas sayısal değerler veya ayrık noktalardan

Detaylı

TEMEL KAVRAMLAR. SAYI KÜMELERİ 1. Doğal Sayılar

TEMEL KAVRAMLAR. SAYI KÜMELERİ 1. Doğal Sayılar TEMEL KAVRAMLAR Rakam: Sayıları ifade etmeye yarayan sembollere rakam denir. Bu semboller {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} kümesinin elemanlarıdır., b ve c birer rakamdır. 15 b = c olduğuna göre, + b + c

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İ : 2 hafta Ödev No : 7 ****(ilk 3 soru çıktı üzerinde el

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ı

BÖLÜM 1 GİRİŞ 1.1 GİRİŞ

BÖLÜM 1 GİRİŞ 1.1 GİRİŞ BÖLÜM 1 GİRİŞ 1.1 GİRİŞ Microsoft Excel de dosyalar çalışma kitabı olarak isimlendirilir. Bu dosyalar normal belge türüdür. Dosya ismi üzerine fare ile tıklandığında dosya açılır. Excel dosyaları tablolardan

Detaylı

Algoritmalar ve Karmaşıklık

Algoritmalar ve Karmaşıklık Algoritmalar ve Karmaşıklık Ders 11 Algoritma Ayrık matematikte karşılaşılan bir çok problem sınıfı mevcuttur. Örneğin, verilen tamsayı grubu içindeki en büyük olanının bulunması, verilen bir kümenin bütün

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ı

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

Arama Algoritmaları. Doğrusal Arama ve Binary Arama Arama Algoritmaları Doğrusal Arama ve Binary Arama Doğrusal Arama-Örnek Dizi (Array) sayilistesiiçerisindeki sayılar aşağıdaki gibidir: 17 23 5 11 2 29 3 11, verilen dizi içerisinde aranacaksa doğrusal

Detaylı

m=n şeklindeki matrislere kare matris adı verilir. şeklindeki matrislere ise sütun matrisi denir. şeklindeki A matrisi bir kare matristir.

m=n şeklindeki matrislere kare matris adı verilir. şeklindeki matrislere ise sütun matrisi denir. şeklindeki A matrisi bir kare matristir. Matrisler Satır ve sütunlar halinde düzenlenmiş tabloya matris denir. m satırı, n ise sütunu gösterir. a!! a!" a!! a!" a!! a!! a!! a!! a!" m=n şeklindeki matrislere kare matris adı verilir. [2 3 1] şeklinde,

Detaylı

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN BLM111 Programlama Dilleri I Hafta 10 Diziler Yrd. Doç. Dr. Caner ÖZCAN Diziler Bilgisayarlar yardımıyla yapılan işlemlerde, çok sayıda veri girilmesi ve girilen verilerin işlenerek belirli bir sistematiğe

Detaylı

2017 MÜKEMMEL YGS MATEMATİK

2017 MÜKEMMEL YGS MATEMATİK 2017 MÜKEMMEL YGS MATEMATİK 1. 2,31 0,33 0,65 0,13 + 3,6 0,6 işleminin sonucu kaçtır? A)0,5 B) 0,8 C)0,9 D)5 E)8 4. Üç basamaklı ABB doğal sayısı 4 e ve 9 a kalansız bölünmektedir. Buna göre, A+B toplamının

Detaylı

İÇİNDEKİLER BASİT EŞİTSİZLİKLER. HARFLİ İFADELER Harfli İfadeler ve Elemanları Eşitsizlik Sembolleri ve İşaretin Eşitsizlik İfadesi...

İÇİNDEKİLER BASİT EŞİTSİZLİKLER. HARFLİ İFADELER Harfli İfadeler ve Elemanları Eşitsizlik Sembolleri ve İşaretin Eşitsizlik İfadesi... İÇİNDEKİLER HARFLİ İFADELER Harfli İfadeler ve Elemanları... 1 Benzer Terim... Harfli İfadenin Terimlerini Toplayıp Çıkarma... Harfli İfadelerin Terimlerini Çarpma... Harfli İfadelerde Parantez Açma...

Detaylı

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

İnternet Programcılığı Öğr. Gör. Serkan AKSU  PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler PHP de Dizi-Değişkenler, Nesneler Dizilerle ilgili örneklere geçmeden önce aşağıdaki tabloyu inceleyelim. Tabloda dizi kavramının mantığı açıklanmaktadır. Tablonun tamamını bir dizi olarak düşünün ve bu

Detaylı

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur Python büyük-küçük harf ayrımı yapar. Pythonda kod yazarken girintiler kullanılır Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur Klavyeden girilen bir değeri okumak ad=input("adınızı giriniz")

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ı

NİSAN 2010 DENEMESİ A)75 B)80 C)85 D)90 E)95 A)0 B)1 C)2 D)3 E)4

NİSAN 2010 DENEMESİ A)75 B)80 C)85 D)90 E)95 A)0 B)1 C)2 D)3 E)4 NİSAN 21 DENEMESİ 1) ABCD dikdörtgeninin AB kenarı üzerindeki M noktasından geçen ve CM doğrusuna dik olan doğru AD kenarını E noktasında kesiyor. M noktasından CE doğrusuna indirilen dikmenin ayağı P

Detaylı

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

Dosyalarda Farklı Yaklaşımlar. Kütük Organizasyonu 1 Dosyalarda Farklı Yaklaşımlar Kütük Organizasyonu 1 Giriş Şimdiye kadar öğrendiğimiz temel dosyalama komutlarıyla (fopen,flclose, fputs vb..) dosya oluşturabilmekte, kayıt ekleyebilmekte ve her bir kaydın

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 2 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Mantıksal Operatörler ve Denetim Yapıları 1 Boolean Boolean, doğru ya da yanlış

Detaylı

Viyana İmam Hatip Lisesi Öğrenci Seçme Sınavı - Matematik

Viyana İmam Hatip Lisesi Öğrenci Seçme Sınavı - Matematik Viyana İmam Hatip Lisesi Öğrenci Seçme Sınavı - Matematik 1. Ünite: Geometriden Olasılığa 1. Bölüm: Yansıyan ve Dönen Şekiller, Fraktallar Yansıma, Öteleme, Dönme Fraktallar 2. Bölüm: Üslü Sayılar Tam

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

Yrd. Doç. Dr. Ümit ATİLA

Yrd. Doç. Dr. Ümit ATİLA Yrd. Doç. Dr. Ümit ATİLA Sıralama Bir grup veriyi azalan veya artan şekilde yerleştirme. Bilgisayar sistemleri için veri sıralama çok önemlidir. Sıralama işlemi, hem arama işlemlerini hem de bir grup veriyi

Detaylı

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

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1 Algoritmalar Heap Sort Bahar 2017 Doç. Dr. Suat Özdemir 1 Heap Sort Heap Sort algoritması Merge Sort ve Insertion Sort algoritmalarının iyi özelliklerini bir arada toplar. Algoritma Insertion Sort gibi

Detaylı

2. ÜNİTE RASYONEL,ÜSLÜ VE KÖKLÜ SAYILAR

2. ÜNİTE RASYONEL,ÜSLÜ VE KÖKLÜ SAYILAR 2. ÜNİTE RASYONEL,ÜSLÜ VE KÖKLÜ SAYILAR KONULAR 1. RASYONEL SAYILAR 2. Kesir Çeşitleri 3. Kesirlerin Sadeleştirilmesi 4. Rasyonel Sayılarda Sıralama 5. Rasyonel Sayılarda İşlemler 6. ÜSLÜ İFADE 7. Üssün

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Diziler (Arrays) 1 Dizi Kavramı 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

Detaylı

MAK 210 SAYISAL ANALİZ

MAK 210 SAYISAL ANALİZ MAK 210 SAYISAL ANALİZ BÖLÜM 8- SAYISAL İNTEGRASYON 1 GİRİŞ Mühendislikte sık karşılaşılan matematiksel işlemlerden biri integral işlemidir. Bilindiği gibi integral bir büyüklüğün toplam değerinin bulunması

Detaylı

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu Öğr. Gör. M. Ozan AKI r1.0 Algoritmalar (Algorithms) Algoritma, bir problemin çözümünü sağlayan ancak deneme-yanılma ve sezgisel çözüme karşıt bir

Detaylı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

Rasgele Sayı Üretme. Rasgele Sayıların Özellikleri. İki önemli istaiksel özelliği var :

Rasgele Sayı Üretme. Rasgele Sayıların Özellikleri. İki önemli istaiksel özelliği var : Rasgele Sayı Üretme Rasgele Sayıların Özellikleri İki önemli istaiksel özelliği var : Düzgünlük (Uniformity) Bağımsızlık R i, rasgele sayısı olasılık yoğunluk fonksiyonu aşağıdaki gibi olan uniform bir

Detaylı

ÜSLÜ SAYILAR. AMAÇ 1: 6 ve 7. Sınıflarda görmüş olduğumuz üslü ifadelerdeki temel kavramları hatırlama

ÜSLÜ SAYILAR. AMAÇ 1: 6 ve 7. Sınıflarda görmüş olduğumuz üslü ifadelerdeki temel kavramları hatırlama AMAÇ 1: 6 ve 7. Sınıflarda görmüş olduğumuz üslü ifadelerdeki temel kavramları hatırlama KURAL: Bir sayının belli bir sayıda yan yana çarpımının kolay yoldan gösterimine üslü sayılar denir. Örneğin 5 sayısının

Detaylı

Çok Yollu Ağaçlar: B*-Trees B*-Trees

Çok Yollu Ağaçlar: B*-Trees B*-Trees Çok Yollu Ağaçlar: B*-Trees B*-Trees B-tree lerde bir node dolunca bölme işlemi yapılmaktadır Bölme sonucunda oluşan iki node da yarı yarıya doludur B*-tree lerde bölme işlemi geciktirilerek node ların

Detaylı

Bir işaretli büyüklük sayısında en soldaki basamak bir işaret içerir. Diğer basamaklarda ise sayısal değerin büyüklüğü (mutlak değeri) gösterilir.

Bir işaretli büyüklük sayısında en soldaki basamak bir işaret içerir. Diğer basamaklarda ise sayısal değerin büyüklüğü (mutlak değeri) gösterilir. İşaretli Tamsayı Gösterimi 1. İşaretli Büyüklük Bir işaretli büyüklük sayısında en soldaki basamak bir işaret içerir. Diğer basamaklarda ise sayısal değerin büyüklüğü (mutlak değeri) gösterilir. Örnek

Detaylı

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

Algoritma Geliştirme ve Veri Yapıları 8 Kuyruk ve Yığın Yapısı. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 8 Kuyruk ve Yığın Yapısı Yığın ve kuyruk modelleri verinin geçici olarka saklandığı, davranışları birbirinin tamamen tersi olan ve bellek üzerinde kurulmuş birer saklama

Detaylı

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü ALGORİTMA ANALİZİ Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü 2 Özyinelemeler veya artık teknik Türkçeye girmiş olan rekürsiflik en çok duyulan fakat kullanımında zorluklar görülen tekniklerdendir.

Detaylı

8. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI.

8. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI. 8. HAFTA BLM323 SAYISAL ANALİZ Okt. Yasin ORTAKCI yasinortakci@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 MATRİSLER Matris veya dizey, dikdörtgen bir sayılar tablosu

Detaylı

ArrayList Uygulamaları

ArrayList Uygulamaları ArrayList Uygulamaları Aşağıdaki program önce boş bir ArrayList yaratıyor. Sonra sırasıyla şu işleri yapıyor: Listenin boş olup olmadığını yaz. Ambara üç tane öğe ekle. İndisi 2 olan yere bir öğe sokuştur.

Detaylı

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

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR Algoritmaların Karşılaştırılması Doç. Dr. Aybars UĞUR Giriş Bir programın performansı genel olarak programın işletimi için gerekli olan bilgisayar zamanı ve belleğidir. Bir programın zaman karmaşıklığı

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Derse Giriş Ders Web Sitesi: www.canerozcan.net Ofis Saatleri: Salı 11:00-13:00 Perşembe 15:30-17:30 ya da email ile randevu alınız: canerozcan@karabuk.edu.tr Kaynak Kitaplar:

Detaylı

BAĞLI LİSTELER BAĞLI LİSTELER

BAĞLI LİSTELER BAĞLI LİSTELER Singly linked lists (Tek bağlı) Doubly linked lists (Çift bağlı) Circular lists Skip lists Self-organized lists Sparse tables Yrd.Doç.Dr. M. Ali Akcayol Singly linked lists Dizilerin dezavantajları. -

Detaylı

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar: Dosyalama Çoğu programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. C programlama dilinde, disk dosyasına erişme (okuma ve yazma için) iki farklı yöntemle yapılır. Bunlar üst düzey ve alt

Detaylı