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

  • Defence Videos

    Defence Vide

    13 Mayıs 2013
  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • talkandroid

    talkandroid

    27 Mayıs 2010