2017-09-12 5 views
-1

donc ceci une partie de mon code contenant ma LinkedList. Comment puis-je trouver le match dans mon ensemble de nombres.comment faire correspondre la valeur d'index dans LinkedList

LinkedList <Integer> mylist = new LinkedList<>(); 
for(int i : 1; i<=5; i++){ 
System.out.println("Process " + i + has :); 
int numINPUT = scan.nextint(); 
mylist.add(numINPUT); 
} 

Ma sortie désirée est:

Process 1 has : 3 
Process 2 has : 4 
Process 3 has : 1 
Process 4 has : 5 
Process 5 has : 2 
Matched : Process 1 and Process 3. 
+0

d'où proviennent ces valeurs? –

+0

Veuillez fournir plus de précisions. –

+0

Je suis curieux. Comment compile-t-on votre code? –

Répondre

0

Il vous suffit de comparer toutes les paires d'éléments de la liste. Si un index d'un article est égal à la valeur d'un autre et vice versa, vous avez une correspondance. Gardez à l'esprit que les indices Java commencent par 0, vos indices commencent par 1.

public static void main(String[] args) { 

    Scanner scan = new Scanner(System.in); 

    LinkedList <Integer> mylist = new LinkedList<>(); 
    for(int i = 1; i<=5; i++){ 
     System.out.print("Process " + i + " has: "); 
     int numINPUT = scan.nextInt(); 
     mylist.add(numINPUT); 
    } 

    for(int i = 0; i < mylist.size(); i++) { 
     for(int j = i + 1; j < mylist.size(); j++) { 
      int value1 = mylist.get(i); 
      int value2 = mylist.get(j); 
      if(value1 == (j + 1) && value2 == (i + 1)) { 
       System.out.println("Matched : Process " + (i + 1) + " and Process " + (j + 1) + "."); 
      } 
     } 
    } 
} 
2

Une chose force brute pourrait ressembler à ceci:

for (int i=0; i<mylist.size(); i++) { 
    int pointingToIndex = mylist.get(i); 
    if (pointingToIndex > 0 && pointingToIndex < mylist.size) { 
    int pointedTo = mylist.get(pointingToIndex); 
    if (pointedTo == i) { 
     System.out.println("match for index: " + i + " and " + pointingToIndex); 
    } 
    } 
} 
  • vous parcourons simplement votre liste; et pour chaque index que vous vérifiez si la valeur sur cet indice est un autre indice valide
  • si oui, vous allez chercher la valeur de cet autre indice, puis de vérifier pour un match
  • vous pourriez avoir besoin de marqueur supplémentaire » "pour éviter d'imprimer des doublons (je pense que ma solution va imprimer 1-3, puis 3-1 plus tard)
  • et oui, ce n'est pas exactement imprimer ce que vous demandez - mais devrait vous donner assez pour aller de l'avant et finir vos devoirs vous-même

En outre: regardez dans votre en nommant. mylist dit ... rien. Pourquoi ne pas l'appeler numbers ou peut-être processIDs ou quelque chose comme ça?