SORU
22 Mayıs 2012, Salı


Röportaj: iki Sıralı Tek başına Birleştirme Listesi Bağlı

Bu programlama bir soru yazılı bir test sırasında sorulan bir röportaj için. "Zaten sıralanmış İki tek bağlı listeler var, onları birleştirmek ve yeni ekstra düğüm oluşturmadan yeni listenin bir baş dönmesi var. Döndürülen liste olarak sıralanmalıdır"

Yöntem imzası: MergeLists(list1, list2 Düğüm Düğüm düğümü);

Düğüm sınıfı aşağıdaki gibidir:

class Node{
    int data;
    Node next;
}

Birçok çözüm denedim ama ekstra düğüm vidalar bir şeyler oluşturmak değil. Yardım lütfen.

Burada eşlik eden bir blog girişi http://techieme.in/merging-two-sorted-singly-linked-list/

CEVAP
22 Mayıs 2012, Salı


Özyineleme yeni bir düğüm ayrılırken önlemek için yapılması gerekenler:

Node MergeLists(Node list1, Node list2) {
  if (list1 == null) return list2;
  if (list2 == null) return list1;

  Node head;
  if (list1.data < list2.data) {
    head = list1;
  } else {
    head = list2;
    list2 = list1;
    list1 = head;
  }
  while(list1.next != null && list2 != null) {
    if (list1.next.data > list2.data) {
      Node tmp = list1.next;
      list1.next = list2;
      list2 = tmp;
    }
    list1 = list1.next;
  } 
  if (list1.next == null) list1.next = list2;
  return head;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CaliforniaMetin

    CaliforniaMe

    3 ŞUBAT 2013
  • Elefant Traks

    Elefant Trak

    5 HAZİRAN 2007
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008