Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.28 KB | None | 0 0
  1.  
  2. // ID des nächsten gefundenen Eulerkreises
  3. eulerCircleID = 0;
  4.  
  5. // Zuordnung von Person -> zugehöriger Eulerkreis
  6. eulerCircles = new Hashtable();
  7.  
  8. // Liste aller Personen auslesen
  9. persons = getPersonList();
  10.  
  11. // Schleife über alle Personen
  12. for(int i = 0; i < persons.length; i++) {
  13.    
  14.     // Person auslesen
  15.     person = persons.get(i);
  16.    
  17.     // Wenn diese Person nicht bereits in einem Eulerkreis enthalten ist ...
  18.     if(!eulerCircles.contain(person)) {
  19.    
  20.         // Eulerkreis für diese Person finden
  21.         eulerCircle = findEulerCircle(person);
  22.        
  23.         // Wenn für diese Person ein Eulerkreis gefunden wurde ...
  24.         if(eulerCircle != null) {
  25.            
  26.             // Schleife über alle Personen des Eulerkreises
  27.             for(int k = 0; k < eulerCircle.length; k++) {
  28.                
  29.                 // Person auslesen
  30.                 eulerPerson = eulerCircle.get(k);
  31.                
  32.                 // Person mit ID zu Eulerkreis hinzufügen
  33.                 eulerCircles.add(eulerPerson, eulerCircleID);
  34.             }
  35.            
  36.             // ID des nächsten gefundenen Eulerkreises um 1 erhöhen
  37.             eulerCircleID++;
  38.         }
  39.     }
  40. }
  41.  
  42. // Anzahl Eulerkreise ausgeben
  43. sysout("Anzahl Eulerkreise: " + eulerCircleID);
  44.  
  45. // Schleife über alle Eulerkreis IDs
  46. for(int i = 0; i < eulerCircleID; i++) {
  47.  
  48.     // Ring-ID ausgeben
  49.     sysout("Ring " + i + ":");
  50.    
  51.     // Schleife über alle Personen die in den Eulerkreisen sind
  52.     for(int k = 0; k < eulerCircles; k++) {
  53.        
  54.         // Person auslesen
  55.         eulerPerson = eulerCircles.get(k);
  56.        
  57.         // Wenn diese Person in aktuellem Eulerkreis enthalten ist ...
  58.         if(eulerPerson.getValue() == i) {
  59.            
  60.             // Person ausgeben
  61.             sysout(eulerPerson);
  62.         }
  63.     }
  64. }
  65.  
  66. /***********************************************/
  67.  
  68. // Eulerkreis finden
  69. private LinkedList<Person> findEulerCircle(Person start) {
  70.    
  71.     // Leere Liste anlegen
  72.     eulerCircle = new LinkedList<Person>();
  73.    
  74.     // Anfangsknoten einfügen
  75.     eulerCircle.add(start);
  76.    
  77.     // Eulerkreis finden
  78.     return findEulerCircle(eulerCircle);
  79. }
  80.  
  81. // Eulerkreis finden
  82. private LinkedList<Person> findEulerCircle(LinkedList<Person> eulerCircle) {
  83.    
  84.     // Letzten Knoten herausfinden
  85.     start = eulerCircle.getLast();
  86.    
  87.     // Alle Freunde des letzten Knotens auslesen
  88.     friends = getFriendList(start);
  89.    
  90.     // Schleife über alle Freunde
  91.     for(int k = 0; k < friends.length; k++) {
  92.    
  93.         // Freund auslesen
  94.         friend = friends.get(k);
  95.        
  96.         // Wenn beide miteinander befreundet sind ...
  97.         if(areFriends(friend, start)) {
  98.        
  99.             // Leere Liste anlegen
  100.             tempEulerCircle = new LinkedList<Person>();
  101.            
  102.             // Neuen Knoten hinzufügen
  103.             tempEulerCircle.add(friend);
  104.            
  105.             // Eulerkreis finden
  106.             tempEulerCircle = findEulerCircle(tempEulerCircle);
  107.            
  108.             // Wenn Eulerkreis gefunden wurde ...
  109.             if(tempEulerCircle != null) {
  110.                
  111.                 // Eulerkreis speichern
  112.                 eulerCircle = tempEulerCircle;
  113.                
  114.                 // Eulerkreis zurückgeben
  115.                 return eulerCircle;
  116.             }
  117.         }
  118.        
  119.         //
  120.         if(eulerCircle.length > 0 && friend == eulerCircle.get(0)) {
  121.            
  122.             if(eulerCircle.length == 1) {
  123.            
  124.                 return null;
  125.             }
  126.             else {
  127.            
  128.                 return eulerCircle;
  129.             }
  130.         }
  131.     }
  132. }
  133.  
  134. /***********************************************/
  135.  
  136. private boolean areFriends(Person p1, Person p2) {
  137.  
  138.     friends = getFriendList(p1);
  139.    
  140.     for(int k = 0; k < friends.length; k++) {
  141.  
  142.         friend = friends.get(k);
  143.        
  144.         if(friend == p2) {
  145.        
  146.             return true;
  147.         }
  148.     }
  149.    
  150.     return false;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement