2017-10-21 76 views
1

J'ai une méthode qui utilise des tableaux pour faire tourner des valeurs tout en gardant la valeur occupant l'index final dans la même position. Comment utiliser les listes pour faire la même chose?Comment puis-je convertir cette méthode de rotation à l'aide de tableaux pour utiliser des listes à la place?

 /* 
    * Maintains the value and index of the last value in the array, while rotating the remaining values 
    */ 
    private static Team[] rotateTeams(Team[] teamsArray) 
    { 
     // capture last value in array 
     Team lastPosition = teamsArray[teamsArray.Length - 1]; 
     // create a smaller array to hold remaining values 
     Team[] smallerTeamArray = new Team[teamsArray.Length - 1]; 
     for (int i = 0; i < smallerTeamArray.Length; i++) 
     { 
      smallerTeamArray[i] = teamsArray[i]; 
     } 
     // create a temporary smaller array to rotate values 
     Team[] tempTeamsArray = new Team[smallerTeamArray.Length]; 
     // choose how many positions to rotate 
     int rotate = 1; 
     // populate temp array with rotated values 
     for (int i = 0; i < smallerTeamArray.Length; i++) 
     { 
      tempTeamsArray[i] = smallerTeamArray[(i + rotate) % smallerTeamArray.Length]; 
     } 
     // repopulate larger array with values and positions from smaller temp array 
     for (int i = 0; i < teamsArray.Length - 1; i++) 
     { 
      teamsArray[i] = tempTeamsArray[i]; 
     } 
     // add captured last value from above to final position in array 
     teamsArray[teamsArray.Length - 1] = lastPosition; 
     return teamsArray; 
    } 
+2

En changeant la déclaration de méthode donc il faut une liste et changer '' Length' à Count'? –

Répondre

1

vous devriez avoir des changements comme celui-ci

private static List<Team> rotateTeams(List<Team> teamsArray) 
     { 
      // capture last value in array 
      Team lastPosition = teamsArray[teamsArray.Count - 1]; 
      // create a smaller array to hold remaining values 
      List<Team> smallerTeamArray = new List<Team>(); 
      for (int i = 0; i < smallerTeamArray.Count; i++) 
      { 
       smallerTeamArray[i] = teamsArray[i]; 
      } 
      // create a temporary smaller array to rotate values 
      List<Team> tempTeamsArray = new List<Team>(); 
      // choose how many positions to rotate 
      int rotate = 1; 
      // populate temp array with rotated values 
      for (int i = 0; i < smallerTeamArray.Count; i++) 
      { 
       tempTeamsArray[i] = smallerTeamArray[(i + rotate) % smallerTeamArray.Count]; 
      } 
      // repopulate larger array with values and positions from smaller temp array 
      for (int i = 0; i < teamsArray.Count - 1; i++) 
      { 
       teamsArray[i] = tempTeamsArray[i]; 
      } 
      // add captured last value from above to final position in array 
      teamsArray[teamsArray.Count - 1] = lastPosition; 
      return teamsArray; 
     } 
+0

Sérieusement? Vous pensez vraiment que le commentaire à la question n'est pas suffisant? – Sefe

+0

Boucle pour smallTeamArray i = 0, count = 0, le reste semble correct, travaillera sur la création de la plus petite liste –