---------- A R R A Y S ---------- Arrays: Bir dizinin elemanlarının bellekte ardışık olarak depolandığını biliyoruz. Diziye rastgele bir konuma eleman eklemek veya çıkarmak neden zordur? Bu işlemler neden verimsizdir? Arrays: Diziye indeks ile erişim hızlıdır. Bu erişim hızının nedeni nedir? Diziye erişimin O(1) olması ne anlama gelir? Arrays: Statik bir dizi ile dinamik bir dizi arasındaki farkları açıklayınız. Dinamik dizilerde belleğin yeniden tahsis edilmesinin nasıl çalıştığını anlatınız. Array Traversal: Dizi elemanlarının üzerinden geçmek (traversal) için en uygun yöntem nedir? Dizinin her elemanına sırayla erişmek neden O(n) karmaşıklığına sahiptir? Array Initialization: Bir diziye bellekte ilk değerlerinin atanmasının (initialize) neden önemli olduğunu açıklayınız. Başlatılmamış bir dizi kullanmanın ne tür hatalara yol açabileceğini belirtiniz. Array Bounds Checking: Dizi sınır kontrolünün (bounds checking) önemi nedir? Sınır kontrolünün yapılmaması durumunda ne tür hatalarla karşılaşabilirsiniz? Multi-dimensional Arrays: Çok boyutlu diziler ile tek boyutlu diziler arasındaki farkları açıklayınız. Çok boyutlu dizi kullanımının avantajlarını ve dezavantajlarını belirtiniz. Dynamic Arrays: Dinamik dizi boyutunun büyütülmesi veya küçültülmesi sürecinde yeniden tahsis işlemi nasıl yapılır? Bu yeniden boyutlandırmanın performansa etkisi nedir? Dynamic Array Resizing Strategy: Dinamik dizinin kapasitesini artırma stratejileri nelerdir? Dizi boyutunu 2 katına çıkarma yaklaşımının avantajları ve dezavantajları nelerdir? Amortized Analysis of Dynamic Arrays: Dinamik dizilerde amortismanlı analiz (amortized analysis) nedir? Dizi yeniden boyutlandırıldığında bu analiz yöntemi nasıl uygulanır? Sparse Arrays: Seyrek diziler (sparse arrays) nedir? Bellek açısından nasıl bir avantaj sunar ve hangi durumlarda kullanmak tercih edilir? Sparse vs Dense Arrays: Seyrek dizi (sparse array) ile yoğun dizi (dense array) arasındaki farkları açıklayınız. Seyrek dizi kullanımının bellek verimliliği açısından avantajlarını belirtiniz. ---------- L I N K E D L I S T S ---------- Linked Lists: Bağlı liste (linked list) veri yapısının bellekteki düzensiz yapısını açıklayınız. Bu veri yapısının diziye kıyasla avantajlarını ve dezavantajlarını belirtiniz. Linked Lists: Bağlı liste üzerinde bir düğüm (node) silme işlemini açıklayınız. Silme işlemi sırasında neden bir önceki düğüm bilgisine ihtiyaç duyulabilir? Linked List Memory Management: Bağlı listelerde bellekte her bir düğüm için ayrı bir alan ayrıldığını biliyoruz. Bu bellek yönetimi diğer veri yapılarıyla karşılaştırıldığında hangi avantajları ve dezavantajları sunar? Linked Lists: Tek yönlü bağlı liste ve çift yönlü bağlı liste arasındaki temel farklar nelerdir? Çift yönlü liste kullanmanın avantajlarını açıklayınız. Doubly Linked List: Çift yönlü bağlı liste üzerinde bir düğüm ekleme ve silme işlemlerinin nasıl gerçekleştirildiğini açıklayınız. Çift yönlü yapının bu işlemleri kolaylaştırmasının sebebi nedir? Linked Lists: Bir bağlı listeyi ters çevirmek için kullanılabilecek yöntemleri açıklayınız. Bağlı listeyi ters çevirmek neden karmaşıktır? Circular Linked Lists: Dairesel bağlı liste (circular linked list) ile tek yönlü bağlı liste arasındaki farkları açıklayınız. Dairesel liste kullanımının avantajları nelerdir? Linked List with a Dummy Head: Bağlı listeye sahte bir baş düğüm (dummy head) eklemek hangi durumlarda faydalıdır? Bu yapı ekleme ve silme işlemlerini nasıl kolaylaştırır? Linked List with Tail Pointer: Bir bağlı listeye kuyruk (tail) göstergesi eklemek hangi avantajları sağlar? Bu yapı, özellikle son düğüme erişimde nasıl bir performans iyileştirmesi sunar? Iterator in Linked Lists: Bağlı listede bir gezici (iterator) kullanmanın avantajları nelerdir? Bir gezicinin liste üzerinde gezinme ve değişiklik yapmadaki rolünü açıklayınız. Removing Duplicates in Linked List: Tek yönlü bağlı bir listeden yinelenen elemanları kaldırmak için nasıl bir algoritma kullanabilirsiniz? Bu işlemin zaman karmaşıklığını değerlendiriniz. Time Complexity in Linked Lists: Bağlı listede arama, ekleme ve silme işlemlerinin zaman karmaşıklığını açıklayınız. Bu işlemlerin zaman karmaşıklığı, dizilerle karşılaştırıldığında nasıl farklılık gösterir? Dynamic Arrays vs Linked Lists: Dinamik diziler (dynamic arrays) ve bağlı listeler arasında bellek yönetimi açısından ne gibi farklar vardır? Hangi durumlarda dinamik diziler yerine bağlı liste tercih edilebilir? Array vs Linked List: Bir dizi ve bağlı liste üzerinde veri arama (searching) işlemi karşılaştırıldığında performans farkları nelerdir? Hangi veri yapısında arama yapmak daha hızlıdır? Linked List vs Array for Insertions: Veri ekleme işlemlerinde bağlı liste ile diziyi karşılaştırınız. Hangi durumlarda bağlı liste daha verimli olur ve neden? Memory Overhead in Linked List: Bağlı listede her düğümün adres bilgisi (pointer) taşımasının bellek kullanımı açısından etkilerini açıklayınız. Bu ek yük (overhead) bağlı listeyi ne zaman dezavantajlı hale getirir? Reverse a Linked List Using Recursion: Özyineleme (recursion) kullanarak tek yönlü bir bağlı listeyi tersine çevirmek için bir algoritma tasarlayınız. Bu yöntemin avantajları ve dezavantajlarını belirtiniz. Garbage Collection in Linked Lists: Bağlı liste veri yapılarında çöp toplama (garbage collection) sürecinin nasıl çalıştığını açıklayınız. Bu sürecin bellek yönetimine katkılarını belirtiniz. Sparse Matrix Representation Using Linked Lists: Seyrek matrisleri bağlı liste kullanarak nasıl temsil edebilirsiniz? Bu temsilin bellekte ne gibi avantajlar sağladığını açıklayınız. Linked List Cycle Detection: Bağlı listede döngü olup olmadığını anlamak için Floyd'un Yavaş ve Hızlı (Tortoise and Hare) algoritmasını açıklayınız. Bu algoritmanın çalışma prensibini ve avantajlarını belirtiniz. ---------- S T A C K S ---------- Stacks: Yığın veri yapısının LIFO (Last In, First Out) prensibi ile çalıştığını biliyoruz. Bu prensibe göre hangi durumlarda stack yapısını kullanmak mantıklıdır? Örneklerle açıklayınız. Stacks: "Push" ve "Pop" işlemlerini bir yığın üzerinde sırasıyla nasıl gerçekleştirirsiniz? Bu işlemler sırasında oluşabilecek hata durumlarını belirtiniz. Stacks: Yığın veri yapısının çağrı yığınında (call stack) nasıl kullanıldığını açıklayınız. Özyineli (recursive) bir fonksiyon çağrıldığında yığının rolü nedir? Stack Overflow: Yığın taşması (stack overflow) nedir? Bir yığında bu durum nasıl oluşur ve yazılımda hangi problemlere yol açabilir? Reverse a Stack: Bir yığını ters çevirmek için nasıl bir algoritma kullanabilirsiniz? Yığın yapısının bu işlemdeki zorluklarını açıklayınız. Implementing Stack with Linked List: Yığın veri yapısını bağlı liste kullanarak nasıl uygulayabilirsiniz? Bağlı liste kullanarak oluşturulan yığın ile dizi tabanlı yığın arasındaki farkları belirtiniz. Stack as a Backtracking Tool: Yığının geri izleme (backtracking) sorunlarını çözmede nasıl kullanıldığını açıklayınız. Yığının labirent çözme gibi bir problemde nasıl rol oynadığını belirtiniz. ---------- Q U E U E S ---------- Queues: Kuyruk veri yapısı FIFO (First In, First Out) prensibiyle çalışır. Bu veri yapısını bankadaki sıra sistemi gibi düşünürsek, FIFO prensibinin avantajlarını ve dezavantajlarını açıklayınız. Queues: Kuyruk veri yapısında "Enqueue" ve "Dequeue" işlemlerini açıklayınız. Bu işlemleri gerçekleştirirken yaşanabilecek olası hata durumlarına örnek veriniz. Queues: Kuyruk yapısını bir sistemde işlem sırasını yönetmek için kullanıyorsunuz. Eğer kuyruk dolarsa ne olur? Bu sorunu çözmek için hangi yöntemleri kullanabilirsiniz? Queue in Operating Systems: İşletim sistemlerinde kullanılan görev kuyrukları (job queues) nasıl çalışır? FIFO prensibinin görev yönetiminde sağladığı avantajları açıklayınız. Implementing Queue with Linked List: Kuyruk veri yapısını bağlı liste kullanarak nasıl uygulayabilirsiniz? Bu uygulamada baş ve son göstergelerinin rolünü açıklayınız. Array-Based Circular Queue Implementation: Dairesel bir kuyruğu dizi kullanarak nasıl uygulayabilirsiniz? Bu yapıda baş ve son göstergelerinin hareketini açıklayınız. Array-Based vs Linked List-Based Queue: Dizi tabanlı ve bağlı liste tabanlı kuyruk yapılarının performans açısından karşılaştırmasını yapınız. Hangi durumlarda dizi tabanlı kuyruk daha avantajlıdır? Stacks vs Queues: Yığın ve kuyruk yapıları arasındaki temel farkları açıklayınız. Hangi uygulamalarda yığın, hangilerinde kuyruk kullanmak daha mantıklıdır? Circular Queues: Dairesel (circular) kuyruğun klasik kuyruktan farkı nedir? Dairesel kuyruğun avantajlarını bir örnek ile açıklayınız. Priority Queue: Öncelikli kuyruk (priority queue) ile normal kuyruk arasındaki fark nedir? Öncelikli kuyruğun sıralı işlem gerektiren durumlarda nasıl kullanıldığını açıklayınız. Array vs Queue for Buffering: Bir sistemde geçici verileri tutmak için neden kuyruk veri yapısı yerine dizi veya bağlı liste kullanılamaz? Kuyruğun tamponlama (buffering) işlemlerinde sağladığı avantajları açıklayınız. Deque (Double-Ended Queue): Çift uçlu kuyruk (deque) nedir? Deque yapısının geleneksel kuyruktan farkları nelerdir ve hangi uygulamalarda tercih edilir? Multithreading and Queues: Çok iş parçacıklı (multithreaded) bir uygulamada kuyruk veri yapısının nasıl kullanılabileceğini açıklayınız. Bu durumda karşılaşılabilecek veri tutarsızlığı (data inconsistency) sorunlarını ve çözüm yöntemlerini belirtiniz. Implementing Queue with Two Stacks: İki yığın kullanarak bir kuyruk nasıl oluşturulur? Bu yöntemin çalışma mantığını ve avantajlarını açıklayınız. Circular Queue Full and Empty Conditions: Dairesel kuyruğun dolu ve boş olduğunu anlamak için kullanılan koşulları açıklayınız. Bu koşulların doğruluğunu sağlamada karşılaşılan zorlukları belirtiniz. Queue in Network Packets: Ağ paketlerini sıraya almak için kuyruk yapısının kullanıldığı bir ağ sistemini düşününüz. Bu veri yapısının paket yönetiminde sağladığı avantajları açıklayınız. Time Complexity of Priority Queue Operations: Öncelikli kuyruk yapısında ekleme, çıkarma ve en büyük/küçük elemanı bulma işlemlerinin zaman karmaşıklığını açıklayınız. Farklı veri yapılarıyla (örneğin, yığın ya da ağaç) bu işlemleri gerçekleştirme farklarını karşılaştırınız.