2017-05-05 6 views
0

Angenommen, Liste 'A' ist 1-> 3-> 5 und Liste 'B' ist 4-> 6-> 7 Wie würden Sie sie mit der Bedingung zusammenführen, dass sie nach sortiert werden müssen verschmelzenden würde ich mag meine Ansicht darüber teilen, lassen sie mich bitte wissen, ob es verbessert werden muss, dieseZusammenführen von zwei sortierten verknüpften Listen

i) Compare first node of 'B' with each node of 'A' 
while A.val<B.val 
A=A.next 
We get 'A' pointing to node whose value is lesser than node of 'B' 
ii) As per the example, intent is to store '4' in '3' 's reference and prior to that store '3' 's reference in a temp 

iii) The same will have to be done for nodes in 'A', as in '5' will have to be stored between 4 and 6 

Bitte lesen und mir helfen

in improvisiert
+0

Das ist ziemlich unvollständig. –

+0

"Vergleiche den ersten Knoten von 'B' mit jedem Knoten von 'A'." - Sie müssen nur die Köpfe vergleichen. Entferne den kleinsten Kopf von A und B und füge ihn deiner Ergebnisliste hinzu. Wiederholen Sie dies, bis einer von A oder B leer ist. Fügen Sie die andere Liste zu Ihrem Ergebnis hinzu. –

+0

@YvesDaoust das ist der Grund, warum ich diese Frage gepostet habe, um mir zu helfen, dies zu vervollständigen und es zu improvisieren –

Antwort

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

    if (list1.data < list2.data) { 
    list1.next = MergeLists(list1.next, list2); 
    return list1; 
    } else { 
    list2.next = MergeLists(list2.next, list1); 
    return list2; 
    } 
} 

Von Interview: Merging two Sorted Singly Linked List

Sie werden keinen klareren Algo als diese Rekursion finden, denke ich.

Wenn Sie den iterativen Weg gehen möchten, haben Sie auch eine andere Antwort in dem Post, den ich mit Ihnen verknüpft habe.

Verwandte Themen