En İyi 40 Bağlantılı Liste Mülakat Sorusu ve Cevabı (2026)

En Sık Sorulan Bağlantılı Liste Mülakat Soruları ve Cevapları

Veri yapıları mülakatına hazırlanmak, zorluklara odaklanmayı gerektirir. Bağlı liste mülakat soruları, adayların problem çözme derinliğini, işaretçi mantığını, bellek farkındalığını ve uç durumları nasıl ele aldıklarını ortaya koyar.

Bağlantılı listeler konusunda uzmanlaşmak, ürün ekipleri, platformlar ve sistem mühendisliği alanlarında çeşitli rollerin kapılarını açar. Pratik deneyim, güçlü teknik uzmanlık, analitik düşünme ve temiz kodlama alışkanlıkları geliştirir. Yeni mezunlardan kıdemli profesyonellere kadar, bu beceri seti gerçek hata ayıklama, performans analizi, genç çalışanlara mentorluk yapma ve deneyimden elde edilen gelişmiş kavramları kullanarak ölçeklenebilir çözümler üzerinde yöneticilerle iş birliği yapmayı destekler.
Daha fazla oku…

👉 Ücretsiz PDF İndir: Bağlantılı Liste Mülakat Soruları ve Cevapları

En Sık Sorulan Bağlantılı Liste Mülakat Soruları ve Cevapları

1) Bağlı listenin ne olduğunu ve diziden farkını açıklayın.

A bağlantılı liste Bağlı listeler, düğüm adı verilen elemanların işaretçiler veya referanslar kullanılarak birbirine bağlandığı doğrusal bir veri yapısıdır. Her düğüm, veri ve listedeki bir sonraki düğüme işaret eden bir işaretçi/referans içerir. Dizilerin aksine, bağlı listeler elemanları bitişik bellekte saklamaz.

Bağlı liste ve dizi arasındaki temel farklar:

Özellik Bağlantılı liste Dizi
Bellek Ayırma Hareketlilik Statik
Öğeye Erişim Süresi O (n) O (1)
Ekleme/Silme (Herhangi bir pozisyonda) verimli Maliyetli (yer değiştirme gerektiriyor)
Bellek Yükü İşaretçiler için ek alan Ek işaretçi yükü yok.

Özetle, bağlantılı listeler daha hızlı ekleme ve dinamik boyutlandırmayı, daha yavaş rastgele erişim ve işaretçilerden kaynaklanan ek bellek yüküyle takas eder.


2) Bağlı listelerin farklı türleri nelerdir?

Var bağlantılı listelerin çeşitli türleriVe mülakatçılar genellikle sizden bunlar arasında ayrım yapmanızı isterler:

  • Tek Bağlantılı Liste: Her düğüm yalnızca bir sonraki düğüme işaret eder.
  • Çift Bağlantılı Liste: Düğümlerin vardır iki işaretçi: bir sonraki düğüme ve bir önceki düğüme.
  • Dairesel Bağlantılı Liste: Son düğüm ilk düğüme geri dönerek bir döngü oluşturur.
  • Çift Yönlü Bağlantılı Liste: Dairesel ve çift yönlü bağlantılı listeleri birleştirir.

Her türün, gezinme ve bellek ihtiyaçlarına bağlı olarak farklı kullanım alanları vardır. Örneğin, çift yönlü bağlantılı listeler, ek işaretçiler pahasına kolay geriye doğru gezinmeye olanak tanır.


3) Tek yönlü bağlantılı listeyi nasıl tersine çevirirsin? (Kodlama Yaklaşımı)

RevBağlı listeyi tersine çevirmek, klasik bir mülakat sorusudur. Amaç, yeni düğümler oluşturmadan, işaretçilerin yönünü değiştirerek listenin yerinde tersine çevrilmesini sağlamaktır.

Ana Fikir:
Üç ipucu kullanın — prev, curr, ve next — ve listede döngü yapın. Her adımda yönlendirme yapın. curr.next için prevArdından tüm işaretçileri ilerletin.

ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode curr = head;
    while (curr != null) {
        ListNode next = curr.next;
        curr.next = prev;
        prev = curr;
        curr = next;
    }
    return prev; // New head
}

Bu, bağlantılı yapıyı ekstra alan gerektirmeden dönüştürür ve çalışır. O (n) Zaman.


4) Bağlı listenin ortasını bulmak için iki işaretçi tekniğini açıklayın.

Bağlı listedeki orta düğümü bulmanın en etkili yolu iki işaretçi kullanmaktır:

  • A yavaş işaretçi Düğümleri tek tek hareket ettirir.
  • A hızlı işaretçi İki düğümü aynı anda hareket ettirir.

Hızlı işaretçi sona ulaştığında, yavaş işaretçi orta noktada olacaktır. Bu teknik şu şekilde çalışır: O (n) Ek alan olmadan zaman.


5) Bağlı listede bir döngüyü nasıl tespit edersiniz?

Döngü tespiti de bir diğer klasik problemdir. Standart çözüm şunları kullanır: Floyd'un Torkaplumbağa ve tavşan algoritması:

  • Hareket slow pointer adım adım.
  • Hareket fast pointer İkişer ikişer.
  • Listede bir döngü varsa, iki işaretçi birleşecektir.

Hızlı işaretçi şuraya ulaşırsa nullListede döngü yok. Bu yöntem şu şekilde çalışır: O (n) Zaman ve O (1) alanı.


6) Bağlı listelerin avantajları ve dezavantajları nelerdir?

Bağlantılı listelerin çeşitli avantajları ve dezavantajları vardır:

Avantajlar Dezavantajlar
Dinamik boyut Rastgele erişim yok
Kolay ekleme/silme İşaretçiler için ek bellek
Veri büyütme konusunda verimli. Zayıf önbellek performansı

Bağlı listeler dinamik veriler için iyi performans gösterir ancak her erişim listenin başından itibaren gezinmeyi gerektirdiğinden, eleman erişimi açısından dizilere göre daha yavaş olabilir.


7) Sıralı iki bağlantılı listeyi nasıl birleştirirsiniz?

Sıralı iki listeyi birleştirmek, mülakatlarda sıkça sorulan bir diğer sorudur. Buradaki fikir, her iki listeyi eş zamanlı olarak taramak ve her adımda listelerden birinden daha küçük düğümü seçerek yeni bir sıralı liste oluşturmaktır.

ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    ListNode dummy = new ListNode(0);
    ListNode tail = dummy;
    while (l1 != null && l2 != null) {
        if (l1.val < l2.val) {
            tail.next = l1;
            l1 = l1.next;
        } else {
            tail.next = l2;
            l2 = l2.next;
        }
        tail = tail.next;
    }
    tail.next = (l1 != null) ? l1 : l2;
    return dummy.next;
}

Bu yöntem sıralama düzenini korur ve şu şekilde çalışır: O(n + m) n ve m uzunluğundaki listeler için süre.


8) Bağlı listedeki N. düğümü listenin sonundan nasıl sileceğinizi açıklayın.

En verimli teknik, şunu kullanır: iki işaretçi n düğümle ayrılmış. İlk işaretçiyi n adım ilerletin, ardından ilk işaretçi sona ulaşana kadar her iki işaretçiyi de hareket ettirin. İkinci işaretçi daha sonra hedef düğümün hemen önünde olacaktır.

Bu, liste uzunluğunu ayrı olarak hesaplamayı önler ve işlemi tamamlar. O (n) Zaman açısından da etkilidir. Ayrıca ilk düğümü kaldırmak gibi uç durumları da ele alır.


9) Bağlı listede k. elemana erişmenin zaman karmaşıklığı nedir?

Erişim kBağlı listedeki n. elemana ulaşmak için listenin başından başlayarak n. elemana kadar ilerlemek gerekir. ki. düğüm. Bağlı listeler doğrudan indeksleme sağlamadığından, bu maliyetlidir. O (n) en kötü durumda zaman.

Buna karşılık, diziler doğrudan indekslemeyi destekler. O (1) Zaman.


10) Neden dizi yerine bağlantılı liste kullanırsınız?

Bağlantılı listeler özellikle şu durumlarda kullanışlıdır:

  • Rastgele konumlarda sık sık ekleme ve silme işlemleri bekliyorsunuz.
  • Verilerinizin boyutunu önceden bilmiyorsunuz.
  • Bellek parçalanması, bitişik bellek tahsisini zorlaştırır.

Dinamik bellek tahsisinde verimliliği ve liste sonlarında veya bilinen bir düğüm referansıyla sabit zamanlı ekleme/silme işlemlerini desteklerler; bu avantajlar dizilerde bulunmaz.


11) Bağlı listelerin gerçek dünyadaki uygulamaları nelerdir?

Bağlı listeler, aşağıdaki sistemlerde yaygın olarak kullanılmaktadır: dinamik bellek ayırma, sık eklemelerya da değişken boyutlu veri yapıları Gereklidirler. Bunlar, bilgisayar biliminin çeşitli temel kavramlarında ve uygulamalarında uygulanmaktadır, örneğin:

  • Dinamik bellek yönetimi (işletim sistemlerinde kullanılır)
  • Geri Al/Yeniden Yap işlevleri metin editörlerinde
  • Karma tablo zincirleme çarpışmaları çözmek için
  • Müzik veya video oynatma listesi navigasyonu
  • Grafik komşuluk gösterimi
  • Polinom aritmetik işlemleri

Bu örnekler, dizi yeniden boyutlandırmanın maliyetli olacağı durumlarda bağlantılı listelerin nasıl esneklik ve verimli dizi manipülasyonu sağladığını vurgulamaktadır.


12) Tek yönlü ve çift yönlü bağlantılı listeler arasındaki farkı açıklayın.

Özellik Tek Bağlantılı Liste Çift Bağlantılı Liste
İşaretçiler 1 (yalnızca sonraki düğüm) 2 (önceki ve sonraki)
Geçişi Sadece bir yön Her iki yönde
Bellek Kullanımı Less (yalnızca bir işaretçi) Daha fazla (ekstra ipucu)
silme Daha zor (önceki düğüme ihtiyaç var) Kolay
Örnek Kullanım Yığın uygulaması Tarayıcı geçmişi navigasyonu

A çift ​​bağlantılı liste Daha çok yönlüdür ancak ek bellek tüketir. Buna karşılık, tek bağlantılı listeler Hafif ve tek yönlü hareket için verimlidirler.


13) Sıralı bağlantılı listeden yinelenen elemanları nasıl kaldırırsınız?

Bağlı liste zaten sıralıysa, yinelenen elemanlar yan yana gelir.

Listeyi dolaşın ve her düğümün verilerini bir sonraki düğümün verileriyle karşılaştırın. Eşleşirlerse, bir sonraki düğümü atlayın.

void removeDuplicates(ListNode head) {
    ListNode current = head;
    while (current != null && current.next != null) {
        if (current.val == current.next.val) {
            current.next = current.next.next;
        } else {
            current = current.next;
        }
    }
}

karmaşıklık: O(n) zaman ve O(1) alan.

Sıralanmamış listeler için HashSet kullanılabilir. track görülen değer.


14) Doğrusal ve dairesel bağlantılı listeler arasındaki fark nedir?

Özellik Doğrusal Bağlı Liste Dairesel Bağlantılı Liste
Son Düğüm NULL'a işaret ediyor. Baş düğüme işaret eder.
Geçişi Bittiği zaman next == NULL Sürekli geçiş
Kullanım çantası Yığın, Kuyruk Dönüşümlü programlama
karmaşa Daha basit Daha karmaşık kullanım

Dairesel listeler, süreçlerin döngüsel olarak yürütüldüğü CPU zamanlaması gibi uygulamalarda özellikle faydalıdır.


15) İki bağlantılı listenin kesişim noktasını nasıl bulursunuz?

İki tek yönlü bağlantılı listenin kesişip kesişmediğini belirlemek için:

  1. Her iki listenin uzunluklarını bulun.
  2. Daha uzun olan listenin işaretçisini, uzunluklar arasındaki fark kadar ilerletin.
  3. Düğümler özdeş olana kadar her iki listeyi de eş zamanlı olarak tarayın.

Alternatif olarak, Karma Kümesi Ziyaret edilen düğümleri O(n) alan kullanarak saklamak için kullanılabilir.

Bu yaklaşım etkilidir ve üst düzey mülakatlarda sıklıkla talep edilir.


16) İki bağlantılı listenin özdeş olup olmadığını nasıl kontrol edersiniz?

İki bağlantılı liste aşağıdaki durumlarda özdeştir:

  • Aynı sayıda düğüme sahipler.
  • Karşılık gelen düğüm değerleri sıra bakımından aynıdır.

Algoritma:

  1. İki listeyi birlikte tarayın.
  2. Her bir düğümün verilerini karşılaştırın.
  3. Eğer tüm çiftler eşleşirse ve her ikisi de NULL değerine ulaşırsa, bunlar özdeştir.

Zaman karmaşıklığı: O (n)

Alan karmaşıklığı: O (1)


17) Bağlı listeler bağlamında bellek sızıntısı nedir?

A bellek sızıntısı Dinamik olarak tahsis edilen düğümlerin kullanım sonrasında serbest bırakılmaması durumunda ortaya çıkar.

Bağlı listelerde, eğer delete or free() Listeden kaldırılan düğümlerde bu fonksiyon çağrılmaz; erişilemez olsa bile bellek kullanılmaya devam eder.

Örneğin, C/ dizinindeki silinmiş düğümlerin serbest bırakılamaması.C++ Bu durum, belleğin kademeli olarak tükenmesine ve sistemin yavaşlamasına veya çökmesine yol açar.

Yıkıcı fonksiyon veya açık bellek boşaltma yöntemiyle yapılan uygun temizlik bu sorunu önler.


18) Bağlı liste kullanarak yığın yapısının nasıl uygulanacağını açıklayın.

İçinde yığınElemanlar LIFO (Son Giren İlk Çıkar) sırasını takip eder.

Bağlı liste idealdir çünkü ekleme ve silme işlemleri listenin başında verimli bir şekilde gerçekleşir.

Operadurumlar:

  • İt: Başa yeni bir düğüm ekleyin.
  • Pop: Baş düğümü kaldırın.
  • Dikizlemek: Başlık verilerini döndür.

Avantajları:
Sabit boyutlu bir diziye gerek yok; elemanlar eklendikçe dinamik olarak büyüyor.


19) Bağlı liste, kuyruk yapısını oluşturmak için nasıl kullanılabilir?

İçinde kuyrukElemanlar FIFO (İlk Giren İlk Çıkar) sırasını takip eder.

Bağlantılı listeyi şu durumlarda kullanın:

  • Sıraya Ekle (Ekle): Kuyruğa bir düğüm ekleyin.
  • Sıradan Çıkar (Kaldır): Baş düğümü sil.

Bu, her iki işlemin de gerçekleştirilmesine olanak tanır. O (1) İki işaretçiyle geçen zaman — front hem de rear.

Genellikle süreç planlama ve yazıcı kuyruk sistemlerinde kullanılır.


20) Dizi listesi ile bağlantılı liste arasındaki farklar nelerdir? Java?

Görünüş Dizi Listesi Bağlantılı liste
Depolama Dinamik dizi Çift bağlantılı liste
Erişim süresi O (1) O (n)
Ekle/Sil Orta seviyede maliyetli Sonuç olarak verimli
Bellek Yükü Less Daha fazla (ekstra ipucu)
Kullanım çantası Sık erişim Sık ekleme/silme

Örnek: Kullanım ArrayList Yoğun arama gerektiren işlemler için ve LinkedList Ekleme/silme işlemlerinin baskın olduğu durumlarda.


21) Çok seviyeli bağlantılı bir listeyi nasıl düzleştirirsiniz?

A çok seviyeli bağlantılı liste hem next hem de child İşaretçiler (her çocuk başka bir bağlantılı listeye yönlendirir). Amaç, tüm düğümleri tek seviyeli bir bağlantılı listeye dönüştürmektir.

Yaklaşım:

  1. Kullanmak yığın or özyinelemeli işlev.
  2. Baş düğümden başlayın.
  3. Bir düğümün varsa child, it next düğümü yığına ekle ve yap child as next.
  4. Yığın boşalana kadar devam edin.

Zaman Karmaşıklığı: O (n)

Uzay Karmaşıklığı: Özyineleme/yığın için O(n).

Örnek (kavramsal olarak):

1 - 2 - 3
    |
    4 - 5
Flattened → 1 → 2 → 4 → 5 → 3

Bu soru, özyineleme ve işaretçi manipülasyonu konusundaki anlayışınızı değerlendirmektedir.


22) Rastgele işaretçilere sahip bir bağlantılı listeyi nasıl kopyalarsınız?

Bu özel bağlantılı listedeki her düğümün iki işaretçisi vardır:

  • next → bir sonraki düğüme işaret eder.
  • random → herhangi bir rastgele düğüme işaret eder.

Algoritma (3 adım):

  1. Klonlanmış düğümleri orijinal düğümler arasına yerleştirin.
  2. Klonlar için rastgele işaretçiler atayın (clone.random = original.random.next).
  3. İki listeyi birbirinden ayırın.

Bu, karma harita için ekstra alan ihtiyacını ortadan kaldırır ve şu şekilde çalışır: O (n) ile zaman O (1) Ekstra alan.

Kullanım Örneği: Karmaşık veri yapılarını (örneğin, grafikler veya nesne referansları) derinlemesine kopyalama.


23) Atlamalı liste nedir ve bağlantılı listelerle ilişkisi nedir?

A atlama listesi Katmanlı bağlantılı liste yapısı, hızlı arama, ekleme ve silme işlemlerine olanak tanır (dengeli ağaçlara benzer).

Çalışma Ortalama süre En kötü durumda
Ara O (log n) O (n)
Ekle/Sil O (log n) O (n)

Birden fazla seviye içerir; üst seviyeler birkaç düğümü "atlayarak" arama verimliliğini artırır.

Örnek: Redis gibi veritabanlarında ve eşzamanlı harita uygulamalarında kullanılır.


24) Bağlı listede palindromu nasıl tespit edebilirsiniz?

Bağlı liste, hem ileri hem de geri okunduğunda aynı ise palindromdur.

Algoritma:

  1. Listenin ortasını bulun.
  2. Reverse ikinci yarı.
  3. İki yarımı düğüm düğüm karşılaştırın.

Eğer tüm karşılık gelen düğümler eşleşirse, bu bir palindromdur.

Örnek:

1 → 2 → 3 → 2 → 1 → ✅ Palindrom

1 → 2 → 3 → 4 → ❌ Palindrom değil

Zaman Karmaşıklığı: O (n)

Uzay Karmaşıklığı: O (1)


25) Bağlı listedeki döngüyü nasıl kaldırırsınız?

Eğer bir döngü mevcutsa (Floyd'un döngü tespiti kullanılarak), şu adımları izleyerek onu kaldırın:

  1. Yavaş ve hızlı işaretçilerin kesişme noktasını tespit edin.
  2. İmleci bir noktaya, baş kısmına hareket ettirin.
  3. İki işaretçiyi de birer adım hareket ettirerek buluştukları noktaya kadar ilerletin. döngü başlangıç ​​düğümü.
  4. Önceki düğümün ayarını yapın next için null.

Bu yaklaşım, döngülerin çözümlenmesi sırasında ek bellek kullanımının olmamasını sağlar.


26) Bağlı listeleri bellekte temsil etmenin farklı yolları nelerdir?

Bağlı listeler şu şekillerde gösterilebilir: üç ana yol:

Temsil Türü Açıklama Örnek Kullanım
Dinamik düğümler Her düğüm dinamik olarak tahsis edilir ve bağlanır. C, C++
Statik dizi gösterimi İşaretçiler yerine dizi indekslerini kullanır. Gömülü sistemler
Bağlantılı nesneler Sınıflarla nesne yönelimli gösterim Java, Python

Her yaklaşım farklı ortamlara uygundur; örneğin, işaretçi manipülasyonunun kısıtlı olduğu durumlarda dizi tabanlı listeler kullanılır.


27) Bağlı listenin uzunluğunu nasıl bulabilirsiniz (yinelemeli ve özyinelemeli)?

Iteratif yaklaşım:

int getLength(ListNode head) {
    int count = 0;
    while (head != null) {
        count++;
        head = head.next;
    }
    return count;
}

Özyinelemeli Yaklaşım:

int getLength(ListNode head) {
    if (head == null) return 0;
    return 1 + getLength(head.next);
}

Her iki yaklaşım da O (n) zaman karmaşıklığı; özyineleme ekler O (n) Çağrı yığını nedeniyle oluşan alan ek yükü.


28) Dairesel çift yönlü bağlantılı listeler kavramını bir örnekle açıklayın.

İçinde dairesel çift yönlü bağlantılı listeHer düğümün iki bağlantısı vardır — biri bir sonrakine, diğeri bir öncekine — ve son düğümün next Başın işareti ise başa doğrudur. prev Son düğüme işaret eder.

Örnek Kullanım Durumları:

  • Gerçek zamanlı işletim sistemleri (döngüsel zamanlama)
  • Müzik çalma listesi tuvaletiping
  • Sekmeler veya slaytlar arasında gezinme

Avantajları:

  • Çift yönlü geçiş.
  • Boş referans yok.
  • Etkin ekleme ve silme işlemleri.

29) Bağlı listedeki alternatif düğümleri nasıl silersiniz?

Algoritma:

  1. Baştan başlayın.
  2. İşaretçileri ayarlayarak her ikinci düğümü silin.
  3. Liste bitene kadar devam edin.

Örnek:

Input: 1 → 2 → 3 → 4 → 5  
Output: 1 → 3 → 5

karmaşıklık:

  • Zaman: O(n)
  • Alan: O(1)

Bu, işaretçi geçişi ve silme güvenliği konusundaki anlayışı kontrol eder.


30) Bağlı listede baştan ve sondan n. düğümü nasıl bulabilirsiniz?

Başlangıçtan beri: Listeyi, sayı n'ye eşit olana kadar dolaşın.

Sonundan itibaren: İki işaretçi kullanın.

  1. İlk işaretçiyi n adım ileriye taşıyın.
  2. İlk değer sıfıra ulaşana kadar ikisini aynı anda hareket ettirin.
  3. İkinci işaretçi artık sondan n. düğümü gösteriyor.

Zaman Karmaşıklığı: O (n)

Uzay Karmaşıklığı: O (1)

Bu yaklaşım, uzunluğu ayrı olarak hesaplama ihtiyacını ortadan kaldırarak verimliliği artırır.


31) Bağlı listeyi nasıl yeniden sıralarsınız?

Problem: Verilen bir liste L0 → L1 → … → Ln-1 → Ln, onu şu şekilde yeniden sıralayın L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …

Adımlar:

  1. Listenin ortasını bulun.
  2. Reverse ikinci yarı.
  3. İki yarımı sırayla birleştirin.

Örnek:

Input: 1 → 2 → 3 → 4 → 5  
Output: 1 → 5 → 2 → 4 → 3

karmaşıklık: O(n) zaman, O(1) uzay.

Bu soru, birden fazla bağlantılı liste işlemini tek bir soruda test eder.


32) Bağlı bir listeyi belirli bir x değeri etrafında nasıl bölümlere ayırırsınız?

Amaç:
Düğümleri, x'ten küçük tüm düğümler x'ten büyük veya x'e eşit düğümlerden önce gelecek şekilde yeniden düzenleyin.

Yaklaşım:

  • İki adet örnek liste oluşturun: before hem de after.
  • Orijinal listeyi dolaşın ve düğümleri ilgili listelere ekleyin.
  • Bunları en sonda birleştirin.

Örnek:

Input: 3 → 5 → 8 → 5 → 10 → 2 → 1, x = 5  
Output: 3 → 2 → 1 → 5 → 8 → 5 → 10

Bu soru sıklıkla veri yeniden düzenleme yeteneğini değerlendirmek için sorulmaktadır.


33) Bağlı listeyi nasıl sıralarsınız?

Bağlı listeler rastgele erişimi desteklemediğinden, Sıralamayı Birleştir en iyi seçimdir.

Adımlar:

  1. Listeyi yavaş/hızlı işaretçiler kullanarak ikiye bölün.
  2. Her bir yarıyı sırayla sıralayın.
  3. Sıralanmış parçaları birleştirin.

Avantajları:

  • O(n log n) zaman.
  • O(1) ek alan (yinelemeli sürüm için).

Dizi algoritmalarının aksine, QuickSort, işaretçi yeniden düzenleme karmaşıklığı nedeniyle bağlantılı listeler için verimsizdir.


34) Tek yönlü, çift yönlü ve dairesel bağlantılı listeler arasındaki fark nedir?

Özellik tek başına iki kat Genelge
Bağlantılar Bir (sonraki) İki (önceki ve sonraki) Son düğüm başa bağlanır.
Geçişi Sadece ileri İleri ve geri Sonsuz geçiş mümkün.
Ekleme/Silme ılımlı Her iki uçta da daha kolay Özel durum işleme
Kullanım çantası Yığın, Kuyruk Geri alma işlemleri Dönüşümlü programlama

Bu karşılaştırma sorusu genellikle kavramsal netliği test etmek amacıyla sorulmaktadır.


35) İki dairesel bağlantılı listenin kesişim noktasını nasıl bulursunuz?

Bu, kesişim probleminin bir uzantısıdır.

Algoritma:

  1. Her listede döngü olup olmadığını tespit edin.
  2. İkisi de döngüsüz ise → standart kesişim algoritmasını kullanın.
  3. Eğer her ikisi de döngüsel ise → her birinin döngü başlangıç ​​noktasını bulun ve aynı olup olmadıklarını veya birbirine bağlı olup olmadıklarını kontrol edin.

Bu sorun şunları birleştiriyor: döngü tespiti hem de kesişim mantığıÇoklu kavram akıl yürütmeyi test etmek.


36) Sıralı bağlantılı listeye nasıl düğüm ekleneceğini açıklayın.

Adımlar:

  1. Verilen değerle yeni bir düğüm oluşturun.
  2. Doğru konumu bulana kadar ilerleyin.
  3. Ayarlamak next Buna göre ipuçları.

Örnek:

Input: 1 → 3 → 5 → 7, Insert 4  
Output: 1 → 3 → 4 → 5 → 7

Bu, işaretçi ayarlama anlayışını test etmek için hazırlanmış temel bir manipülasyon problemidir.


37) Bağlı listeyi ikiye nasıl bölersiniz?

Algoritma:

  • Yavaş ve hızlı işaretçi yöntemini kullanın.
  • Ne zaman fast sona ulaşır, slow Orta noktada olacak.
  • O düğüm noktasından bölün.

Örnek:

Input: 1 → 2 → 3 → 4 → 5  
Output: 1 → 2 → 3  and  4 → 5

Bu işlem genellikle bağlantılı liste birleştirme sıralamasının ilk adımıdır.


38) Bağlı listede bir değerin son geçtiği yeri nasıl bulursunuz?

Listeyi incelerken dikkatli olun.ping tracHedef değerin bulunduğu son düğümün k değeri.

Sözde kod:

ListNode findLastOccurrence(ListNode head, int val) {
    ListNode result = null;
    while (head != null) {
        if (head.val == val) result = head;
        head = head.next;
    }
    return result;
}

karmaşıklık: O (n)

Bu, doğrusal geçiş ve koşul kontrolü konusundaki anlayışı test eder.


39) Bağlı listeden belirli bir anahtarın tüm tekrarlarını nasıl kaldırabilirsiniz?

Algoritma:

  1. Hedef anahtarı içeriyorsa, öncelikle baş düğümleri işleyin.
  2. Ardından, anahtarı içeren sonraki düğümleri dolaşın ve silin.

Örnek:

Input: 1 → 2 → 6 → 3 → 4 → 5 → 6, Key = 6  
Output: 1 → 2 → 3 → 4 → 5

karmaşıklık: O (n)

Bu, uç durumlar (özellikle baş silinmeleri) hakkındaki bilgiyi göstermektedir.


40) Yığın ve bağlı liste veri yapıları arasındaki temel farklar nelerdir?

Özellik Yığın Bağlantılı liste
Erişim türü LIFO (Son Giren İlk Çıkar) Ardışık
Uygulama Dizi veya Bağlı Liste Düğüm tabanlı
Operasyon İtme/Çıkarma Ekle/Sil/Gezinti
Esneklik Sınırlı erişim Esnek erişim
Kullanım çantası Fonksiyon çağrısı yönetimi Dinamik veri işleme

Bir yığın oluşturulabilir. bağlantılı liste kullanarakAncak kavram olarak farklılık gösterirler; yığın (stack) kısıtlı erişime sahipken, bağlantılı liste (linked list) genel amaçlı bir yapıdır.


🔍 Gerçek Dünya Senaryoları ve Stratejik Yanıtlarla En Sık Sorulan Bağlantılı Liste Mülakat Soruları

1) Bağlı liste nedir ve diziden farkı nedir?

Adaydan beklenenler: Mülakatçı, temel veri yapıları hakkındaki anlayışınızı ve avantaj-dezavantajları karşılaştırma yeteneğinizi değerlendirmek istiyor.

Örnek cevap: Bağlı liste, düğüm adı verilen elemanların işaretçiler kullanılarak birbirine bağlandığı doğrusal bir veri yapısıdır. Her düğüm veri ve bir sonraki düğüme referans içerir. Dizilerin aksine, bağlı listeler bitişik belleğe ihtiyaç duymaz ve dinamik boyutlandırmaya izin verir, ancak elemanlar indekslenmediği için erişim süreleri daha yavaştır.


2) Gerçek dünya uygulamalarında dizi yerine bağlantılı listeyi ne zaman tercih edersiniz?

Adaydan beklenenler: Uygun veri yapılarını seçme konusundaki pratik yargınızı değerlendiriyorlar.

Örnek cevap: Sık sık ekleme ve silme işlemleri gerektiğinde, özellikle veri setinin ortasında, bağlantılı listeyi tercih ederim. Önceki görevimde, görevlerin sık sık eklenip çıkarıldığı bir görev zamanlama özelliği üzerinde çalıştım ve bağlantılı liste, diziye göre daha iyi performans sağladı.


3) Tek yönlü bağlantılı listeler ve çift yönlü bağlantılı listeler arasındaki farkı açıklayabilir misiniz?

Adaydan beklenenler: Mülakatçı, kavramsal netliğinizi ve teknik farklılıkları açıkça açıklama yeteneğinizi doğrulamak istiyor.

Örnek cevap: Tek yönlü bağlantılı listede düğümler yalnızca bir sonraki düğüme işaret ederken, çift yönlü bağlantılı listede düğümler hem bir sonraki hem de bir önceki düğüme işaret eder. Çift yönlü bağlantılı listeler geriye doğru gezinmeyi kolaylaştırır ancak ek işaretçi nedeniyle daha fazla bellek gerektirir.


4) Bağlantılı listede bir döngüyü nasıl tespit edersiniz?

Adaydan beklenenler: Bu, problem çözme becerilerinizi ve yaygın algoritmik kalıplara aşinalığınızı test eder.

Örnek cevap: Yaygın bir yaklaşım, genellikle yavaş ve hızlı işaretçi tekniği olarak adlandırılan, farklı hızlarda hareket eden iki işaretçi kullanmaktır. Bir döngü oluşursa, iki işaretçi sonunda buluşacaktır. Daha önceki bir yazımda, veri işleme hattındaki sonsuz döngüleri önlemek için bu yaklaşımı kullanmıştım.


5) Bağlı listeler üzerinde sıklıkla yapılan işlemlerden bazıları nelerdir?

Adaydan beklenenler: Mülakatçı, standart operasyonları ve bunların sonuçlarını anlayıp anlamadığınızı görmek istiyor.

Örnek cevap: Sık kullanılan işlemler arasında listeye ekleme, silme, dolaşma, arama ve listeyi tersine çevirme yer alır. Her işlemin, gerçekleştirildiği yere bağlı olarak farklı zaman karmaşıklığı vardır; bu da verimli sistemler tasarlarken önemlidir.


6) Bağlı listenin ortasına bir düğüm eklemeyi nasıl ele alırsınız?

Adaydan beklenenler: İşaretçi manipülasyonu konusundaki anlayışınızı ve ayrıntılara dikkat etme becerinizi test ediyorlar.

Örnek cevap: Ortaya bir düğüm eklemek için önce listede gezinerek hedef konumu buluyorum, ardından işaretçileri ayarlayarak yeni düğümün bir sonraki düğümü, önceki düğümün de yeni düğümü göstermesini sağlıyorum. Listenin bozulmasını önlemek için işaretçi güncellemelerinin dikkatli yapılması çok önemlidir.


7) Bağlı listenin performans sorunlarına yol açtığı bir durumu ve bu sorunu nasıl çözdüğünüzü açıklayın.

Adaydan beklenenler: Bu davranışsal soru, düşünme ve optimizasyon yeteneğinizi değerlendirir.

Örnek cevap: Önceki işimde, sık yapılan arama işlemleri için bağlantılı liste kullanılıyordu ve bu da performansı yavaşlatıyordu. Sorunu tespit ettim ve karma tabanlı bir yapıya geçilmesini önerdim; bu da arama sürelerinde önemli bir iyileşme sağladı.


8) Bağlı listeyi nasıl tersine çevirirsiniz?

Adaydan beklenenler: Mülakatçı, mantıksal düşünme yeteneğinizi ve yinelemeli veya özyinelemeli yaklaşımları anlama becerinizi test ediyor.

Örnek cevap: Bağlı bir listeyi tersine çevirmek için, liste üzerinde döngü yaparak her düğümün next işaretçisini önceki düğüme işaret edecek şekilde değiştiririm. Bu işlem, tüm işaretçiler tersine çevrilene ve listenin başındaki düğüm güncellenene kadar devam eder.


9) Bağlı listelerin kullanımının avantajları ve dezavantajları nelerdir?

Adaydan beklenenler: Dengeli bir bakış açısı ve olası dezavantajların farkında olmak istiyorlar.

Örnek cevap: Avantajları arasında dinamik boyut ve verimli ekleme ve silme işlemleri yer almaktadır. Dezavantajları ise dizilere kıyasla daha yüksek bellek kullanımı ve daha yavaş erişim süreleridir. Son görevimde, bu avantaj ve dezavantajları anlamak, farklı bileşenler için doğru yapıyı seçmeme yardımcı oldu.


10) Bir sistem tasarımında hangi tür bağlantılı listeyi kullanacağınıza nasıl karar verirsiniz?

Adaydan beklenenler: Bu durumsal soru, mimari bağlamlarda karar verme süreçlerini değerlendirmektedir.

Örnek cevap: Dolaşım ihtiyaçları, bellek kısıtlamaları ve işlem sıklığı gibi faktörleri dikkate alıyorum. Örneğin, geriye doğru dolaşım gerekiyorsa, çift yönlü bağlantılı liste daha uygundur, oysa daha basit ve bellek açısından verimli uygulamalar için tek yönlü bağlantılı liste yeterlidir.

Bu yazıyı şu şekilde özetleyin: