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

  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • ETrade Supply

    ETrade Suppl

    23 Temmuz 2011
  • tutvid

    tutvid

    19 AĞUSTOS 2006