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

  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • SDSARG3

    SDSARG3

    14 Mart 2009