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

  • Canal TekZoom

    Canal TekZoo

    1 NİSAN 2012
  • hanksranger

    hanksranger

    6 EKİM 2009
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008