Programlama Ve Algoritmalar Dersi 2. Ünite Sorularla Öğrenelim

Diziler, Bağlı Listeler, Kuyruklar ve Yığınlar

Diziler

1- Dizi(array) nedir?

Cevap: Dizi (array), aynı tipteki verilerin tek bir değişken altında tutulmasını sağlayan veri yapısıdır. Sabit bir değere sahip olan dizinin uzunluğu, dizi oluşturulurken belirlenir. Bir dizide bulunan verilerin her biri, o dizinin bir elemanı olarak adlandırılır. Dizinin elemanlarına erişim indis (index) adı verilen sayısal değerler aracılığıyla sağlanır.

2- Dizilerdeki indislerin numaralandırılması hangi sayı ile başlar?

Cevap: Dizinin elemanlarına erişim indis (index) adı verilen sayısal değerler aracılığıyla sağlanır. İndislerin numaralandı-rılması 0 ile başlar, dizinin uzunluğunun 1 eksiğine kadar ardışık olarak artarak devam eder.

3- C dili ile dizinin tanımlanması için gerekli olan ifade hangi bileşenlerden oluşur?

Cevap: C Dili ile programlamada bir dizi ile işlem yapabilmek için, diğer veri tiplerindeki değişkenlerde olduğu gibi, öncelikle dizinin tanımlanması gerekmektedir. Dizilerin tanımlanmasındaki genel ifade şu bileşenlerden oluşur: dizi-tipi: Dizinin hangi tipteki verilerden oluşacağını gösterir (int, char, double,float vb. veri tipleri olabilir) dizi-adı: Tanımlanan dizinin adını ifade eder. dizi-uzunluğu: Köşeli parantez içerisinde belirtilen bu değer, dizinin uzunluğunu belirtir.

4- Yukarıdaki fonksiyona göre programın ekran çıktısı nasıl olacaktır?

Cevap: Ana fonksiyon içerisinde int veri tipinde, tamsayiDizisi adında, 6 eleman kapasiteli bir dizi tanımlanmıştır. Daha sonrasında bir döngüaracılığıyla dizinin her elemanına 0 değeri atanmıştır ve bu değerler ekrana yazdırılmıştır. Bu sorudaki programın ekran çıktısı şu şekilde olacaktır: dizi[0] = 0 dizi[1] = 0 dizi[2] = 0 dizi[3] = 0 dizi[4] = 0 dizi[5] = 0

5- M adet sayır, N adet sütundan oluşan iki boyutlu dizinin eleman sayısı nasıl hesaplanır?

Cevap: Satır ve sütunlardan oluşan tablolar şeklinde tanımlanabilen iki boyutlu diziler, çok boyutlu dizilerin en yalın halidir. M adet satır, N adet sütundan oluşan iki boyutlu bir dizi, toplam (m x n) elemana sahip olabilir. Örneğin 4 satır ve 3 sütundan oluşan iki boyutlu bir dizinin eleman sayısı (4*3)=12 olacaktır.

6- Üç boyutlu diziler nasıl oluşur?

Cevap: Üçboyutlu diziler, iki boyutlu dizilerin katmanlar halinde bir araya gelmesiyle oluşur. Üçboyutlu bir diziyi, “iki boyutlu dizilerin dizisi” olarak da tanımlamak mümkündür. Boyut uzunlukları sırasıyla a, b, c olan üçboyutlu bir dizinin sahip olacağı toplam eleman sayısı a*b*c kadar olur.

Bağlı Listeler

7- Bağlı liste (linked list) nedir?

Cevap: Bağlı liste (linked list), aynı türden nesnelerin doğrusal bir sırada ve birbirlerine bağlı şekilde saklandığı veri yapısıdır. Bağlı listedeki nesnelere düğüm (node) adı verilir ve düğümler birbirlerine bir sonraki düğümüişaret eden göstericiler (next pointer) aracılığıyla bağlanmışlardır. Ayrıca, bağlı listelerde listenin başlangıcını işaret eden bir baş gösterici (head pointer) de bulunur. Bağlı listeleri oluşturan düğümler genellikle iki kısımdan meydana gelir. Düğümün ilk kısmında veri saklanırken, ikinci kısmında ise bir sonraki düğümün bilgisayar hafızasın- daki yeri saklanır

8- Bağlı liste türleri nelerdir?

Cevap: Bağlı listelerin elemanları dolaşılırken ileriye doğru gitmek, geriye doğru hareket etmek ve listenin sonundan listenin başına erişmek mümkün olabilir. Belirtilen bu hareket kabiliyetleri, çeşitli türlerde bağlı listelerin ortaya çıkmasına neden olur. Bağlı listelerdeki üç tür aşağıda listelenmiştir: Tek yönlübağlı liste (Singly linked list) Çift yönlübağlı liste (Doubly linked list) Dairesel bağlı liste (Circular linked list)

9- Tek yönlübağlı listelerde, liste düğümleri arasındaki gezinme hangi yönlere doğru gerçekleşir?

Cevap: Tek yönlübağlı listelerde, liste düğümleri arasındaki gezinme yalnızca ileriye doğru gerçekleşir.

10- Bağlı listeler ve diziler arasında ne tür farklılıklar vardır?

Cevap: Veri yapısı olarak benzerlik gösteren dizilerin ve bağlı listelerin, birbirleriyle kıyaslandığında, çeşitli açılardan avantajları ve dezavantajları bulunmaktadır. Bağlı listelerin ve dizilerin çeşitli ölçütlere göre karşılaştırması aşağıda verilmiştir: Veri yapısı uzunluğu: Dizilerde veri yapısının uzunluğu sabittir, gerekli durumlarda dizi uzunluğu arttırılamaz veya azaltılamaz. Bağlı listelerde uzunluk dinamiktir, yeni nesneler eklenebilir, var olan nesneler silinebilir. Hafıza kullanımı: Bağlı listelerdeki her bir nesnenin göstericisi için, bilgisayar ha- fızasında yer ayrılması gerekir. Dizilerde böyle bir durum söz konusu değildir. Veri ekleme/silme maliyeti: Dizilerde ekleme ve çıkarma işlemleri, programlama açısından oldukça yüksek maliyetlidir. Bağlı listelerde ekleme veya çıkarma yapmak, dizilerdekine göre daha az maliyetli ve kolaydır. Verilere doğrudan erişim: Dizi elemanlarına indisler aracılığıyla doğrudan erişilebilir. Bağlı listelerde ise böyle bir durum söz konusu değildir. Bağlı listenin bir elemanına erişmek için o elemanın listede aranması ve bulunması gerekir.

11- Çift yönlü bağlı listelerde, liste düğümleri arasındaki gezinme hangi yönlere doğru gerçekleşir?

Cevap: Çift yönlübağlı listelerde, liste düğümleri arasında hem ileriye hem de geriye doğru gidilebilir. Çift yönlübağlı listenin bir düğümü, bir sonraki düğümü işaret eden göstericinin (next pointer) yanı sıra, bir önceki düğümü işaret eden göstericiyi (previous pointer) de içerir.

12- Dairesel bağlı liste nedir?

Cevap: Bir bağlı listenin son düğümünün bir sonraki düğümü işaret eden göstericisi (next poin- ter) listenin ilk düğümünü işaret ettiğinde liste dairesel hale gelmişolur. Bağlı listelerin bu çeşidine dairesel bağlı liste denilmektedir.

13- Tamsayı değerler saklayacak bir bağlı liste için düğüm yapısı C dilinde nasıl oluşturulur?

Cevap: Bağlı listenin elemanlarını temsil etmek için bir düğüm yapısı oluşturulmalıdır. Bu yapıda düğümde saklanacak veri (data) ve bir sonraki düğümün göstericisi (next pointer) yer alır. Bağlı listede düğüm yapısı şu şekilde oluşturulabilir:

14- Bağlı listede listenin başına eleman C dilinde nasıl eklenir?

Cevap: Bağlı listelerde listenin başına, sonuna veya herhangi bir bölgesine eleman eklemek mümkündür. Ekleme işleminde, eklenecek düğüm için malloc fonksiyonu ile hafızada yer açılır. Aşağıdaki örnekte listenin başına ekleme yapan bir fonksiyon gösterilmiştir.

15- Bağlı listede liste başından eleman C dilinde nasıl çıkarılır?

Cevap: Bağlı listelerde listenin başından, sonundan veya herhangi bir bölgesinden eleman çı- karılabilir. Çıkarma işleminde çıkarılacak düğüm, free fonksiyonu ile hafızadan silinir. Çıkarma işlemi listenin ara bir bölgesinden yapılacaksa, öncelikle çıkarılacak düğüm liste içerisinde bulunmalı, düğüm bulunduktan sonra çıkarma işlemi gerçekleştirilmelidir. Bağlı listelerde çıkarma işlemini baş tara an gerçekleştiren fonksiyon şu şekilde olabilir:

16- Bağlı listede listenin elemanlarını C dilinde nasıl gezebiliriz?

Cevap: Bağlı listenin elemanlarını gezinmek, listenin başından sonuna kadar gitmek demektir. Gezinme işlemi, listenin son elemanına ulaşılıncaya kadar, yani bir sonraki düğümüişaret eden göstericisi (next pointer) NULL olan eleman bulunana kadar devam eder. Listenin elemanları gezinilirken, listede eleman arama veya elemanları ekrana yazdırma gibi işlemler de yapılabilir. Aşağıdada listenin elemanlarını gezinen kod bloğu gösterilmiştir.

17- Programlamada FIFO kuralı nedir?

Cevap: Programlamada kuyruk (queue), verilerin doğrusal sırada tutulmasını sağlayan bir veri yapısıdır. Bir kuyruğun başı (front) ve sonu (rear) bulunur. Kuyruk yapısındaki temel işlemler olan ekleme (enqueue) son taraftan, çıkarma (dequeue) ise baştaraftan gerçekleştirilir. Dolayısıyla kuyruğa ilk giren eleman, kuyruktan ilk çıkan eleman olur. FIFO (First-In First-Out): Programlamada kuyruklar FIFO kuralı ile anılır. Bu ifade, “İlk Giren İlk Çıkar” şeklinde tercüme edilebilir.

Kuyruklar

18- LIFO kuralı nedir?

Cevap: LIFO (Last-In First-Out): Programlamada yığınlar LIFO kuralı ile anılır. Bu ifade, “Son Giren İlk Çıkar” şeklinde tercüme edilebilir.

Yığınlar

19- Programlamada yığınlar hangi amaçla kullanılır?

Cevap: Yaşantımızdaki çeşitli aktivitelerde nesnelerin üst üste dizilmesi gerekir. Üniversite ye- mekhanesindeki tepsiler, restoran mutfağındaki tabaklar, elbise dolabı rafındaki kıyafetler, nesnelerin günlük yaşamda üst üste dizilmesi için gösterilebilecek basit örneklerdir. Bir üniversite yemekhanesindeki tepsilerden almak istediğimizde, temiz tepsilerin içerisinden en üstte olanı alırız. Temiz tepsiler biriktirilirken, yeni gelen tepsiler var olanların üstüne eklenir. Nesnelerin üst üste dizilimi, günlük hayatta olduğu gibi programlamada da var olan bir gereksinimdir. Bu ihtiyaç, yığın (stack) adı verilen veri yapıları ile karşılanır. Yığın, verilerin doğrusal bir şekilde tutulduğu, ekleme ve çıkarma işlemlerinin en üst noktadan yapıldığı bir veri yapısıdır. Eklenen veri, yığının en üst noktasında saklanırken; çıkarılan veri de yığının en üst noktasından alınır. Yığının en üst noktasının takibi, yığının tepe noktası (top) aracılığıyla sağlanır

20- Programlamada yığınlar üzerinde yapılan temel işlemler nelerdir?

Cevap: Programlamada, yığınlar üzerinde yapılan temel işlemler eleman ekleme (push), ele- man çıkarma (pop) ve en üstteki elemanı elde etmedir (peek) . Pop işleminde en üstteki eleman yığından çıkarılırken, peek işleminde yalnızca bu elemanın değeri elde edilir, eleman yığından çıkarılmaz. Bu işlemlerin yanı sıra yığının doluluk kontrolü(isFull) ve yığının boşluk kontrolü(isEmpty) gibi yardımcı fonksiyonlar da kullanılabilir.

Sıra-(Soruid) 1-(865858) 2-(865861) 3-(865870) 4-(865879) 5-(865885) 6-(865887) 7-(865891) 8-(865908) 9-(865912) 10-(865895) 11-(865942) 12-(865949) 13-(865965) 14-(865975) 15-(865988) 16-(865996) 17-(866009) 18-(866032) 19-(866021) 20-(866025)

Yaz Okulu Kayıt ve Ders Seçme
28 Haziran 2021 Pazartesi