2016-05-05 11 views
0

Ich brauche Hilfe, um eine Hauptmethode zum Testen dieses Programms zu erstellen, das ich für eine Zuweisung erstellt habe. Schreiben Sie eine Methode zum Zusammenführen von zwei verknüpften Listen von Ganzzahlen, die in absteigender Reihenfolge sortiert sind. Das Ergebnis sollte eine dritte verknüpfte Liste sein, die die sortierte Kombination der ursprünglichen Listen ist. Zerstöre die ursprünglichen Listen nicht.Erstellen einer Hauptmethode zum Testen verketteter Listen

import java.util.Iterator; 
import java.util.LinkedList; 
public class Exercise6 
{ 
    public static LinkedList<Integer> merge(LinkedList<Integer> a,LinkedList<Integer> b) 
    { 
    //Initialize variables 
    LinkedList<Integer> result = new LinkedList<Integer>(); 
    Iterator<Integer> aI = a.iterator(); 
    Iterator<Integer> bI = b.iterator(); 
    int aTemp = 0; 
    int bTemp = 0; 

    //Get the first values from both lists using the next method 
    aTemp = aI.next(); 
    bTemp = bI.next(); 

    while(aI.hasNext() && bI.hasNext()) 
    { 
     //Comparing the two elements 
     if(aTemp > bTemp) 
     { 
      result.add(bTemp); 
      bTemp = bI.next(); 
     } 
    } 

    if(!aI.hasNext()) 
    { 
     result.add(aTemp); 
    } 

    while(aI.hasNext()) 
    { 
     result.add(aTemp); 
     aTemp = aI.next(); 
    } 

    while(bI.hasNext()) 
    { 
     result.add(bTemp); 
     bTemp = bI.next(); 
    } 

    if(!aI.hasNext()) 
    { 
     result.add(aTemp); 
    } 
    else 
    { 
     result.add(bTemp); 
    } 
    return result; 
} 
} 
+0

Welche Hilfe benötigen Sie? Einen Energy Drink für dich kaufen? – MikeCAT

+0

@MikeCAT Ich denke, er will einen Fahrer für sein Programm? Ich bin auch verwirrt. – DarkV1

+1

Nein, ich verstehe, wie Linked-Listen funktionieren, wenn das Programm geschrieben wird. Wenn mein Code korrekt ist, bin ich nicht sicher, wie ich es testen soll, um zwei zu deklarieren und dann die Methode für beide aufzurufen ? Aber ich habe nichts gegen einige Energydrinks ... – Anonymous

Antwort

0

Ich denke, das alles, was Sie haben wollen:

LinkedList<Integer> list1 = new LinkedList<Integer>(); 
list1.add(9); 
list1.add(7); 
list1.add(3); 
LinkedList<Integer> list2 = new LinkedList<Integer>(); 
list1.add(8); 
list1.add(5); 
list1.add(1); 
Exercise6 test = new Exercise6(); 
test.merge(list1,list2) 
0

Zuerst Sie else für Ihre if in while(aI.hasNext() && bI.hasNext()) fehlen. Als nächstes würde ich stark empfehlen, dass Sie die List Schnittstelle programmieren (anstelle des Betons LinkedList Art). Außerdem würde ich die merge Methode generische auf einigen vergleichbaren Typ T machen. So etwas wie,

public static <T extends Comparable<? super T>> List<T> merge(List<T> a, List<T> b) { 
    // Initialize variables 
    List<T> result = new LinkedList<>(); 
    Iterator<T> aI = a.iterator(); 
    Iterator<T> bI = b.iterator(); 
    // Get the first values from both lists using the next method 
    T aTemp = aI.hasNext() ? aI.next() : null; 
    T bTemp = bI.hasNext() ? bI.next() : null; 
    while (aI.hasNext() && bI.hasNext()) { 
     // Comparing the two elements 
     if (aTemp.compareTo(bTemp) < 0) { 
      result.add(bTemp); // <-- add the right-hand side 
      bTemp = bI.next(); 
     } else { 
      result.add(aTemp); // <-- add the left-hand side 
      aTemp = aI.next(); 
     } 
    } 
    // Add the final two values from the loop. 
    if (aTemp.compareTo(bTemp) < 0) { 
     result.add(bTemp); 
     result.add(aTemp); 
    } else { 
     result.add(aTemp); 
     result.add(bTemp); 
    } 
    while (aI.hasNext()) { // Add any remaining values from a 
     result.add(aI.next()); 
    } 
    while (bI.hasNext()) { // Add any remaining values from b 
     result.add(bI.next()); 
    } 
    return result; 
} 

Dann können Sie merge testen wie

public static void main(String[] args) { 
    System.out.println(merge(Arrays.asList(6, 4, 2), Arrays.asList(5, 3, 1))); 
    System.out.println(merge(Arrays.asList("bat", "ant"), 
      Arrays.asList("dog", "cat"))); 
} 

ich

[6, 5, 4, 3, 2, 1] 
[dog, cat, bat, ant] 
0

So schreiben Sie Ihren Code ohne es je zu testen? Ich würde vorschlagen, dass Sie mit dem Schreiben von Fahrerklassen vertraut werden, da Ihr Code immer größer wird, müssen Sie ihn auf dem Weg testen.

  1. Erstellen Sie eine weitere Klasse im selben Paket Ihrer Übungsklasse: Sie können es ÜbungDriver nennen. Importieren Sie Klassen nach Bedarf.

  2. Deklarieren Initialisieren und zwei verknüpfte Listen auffüllen. Erklären Sie eine dritte Verbindung verloren, um das Ergebnis zu speichern.

  3. Rufen Sie die statische Methode Ihrer Exercise6 Klasse

  4. drucken das Ergebnis

überprüfen Sie etwas tun könnte, wie:

import java.util.LinkedList; 
public Class ExcerciseDriver{ 

    public static void main (String[] args){ 

     LinkedList<Integer> list1 = new LinkedList<>(); 
     LinkedList<Integer> list2 = new LinkedList<>(); 
     LinkedList<Integer> resultList; 

     list1.add(77); 
     list1.add(7); 
     list1.add(6); 

     list2.add(100); 
     list2.add(43); 
     list2.add(8); 

     resultList = Excercise6.merge(list1, list2); 

     System.out.println(resultList); 
    } 
} 

Jetzt alles, was Sie müssen Führen Sie die Haupt Methode und überprüfen Sie die richtige Ihr Algorithmus

Verwandte Themen