2010-01-28 5 views
0

J'ai un tableau int avec pour dimentions:Comment supprimer une ligne et une colonne dans un tableau à deux dimensions?

int[,] intArray2D = new int[3,3]; 

je voudrais avoir deux méthodes telles que:

int[,] removeLine(int[,] array, int arrayColumnsCount, int lineToRemove){...} 
int[,] removeColumn(int[,] array, int arrayColumnsCount, int columnToRemove){...} 

Ainsi, ayant le tableau:

1 2 3 
4 5 6 
7 8 9 

L'appel de la Méthode removeLine avec lineToRemove = 1 Je dois obtenir le tableau:

1 2 3 
7 8 9 

appel de la méthode columnLine avec columnToRemove = 1 Je dois obtenir le tableau:

1 3 
4 6 
7 9 

Quels sont vos conseils de mise en œuvre?

Merci

RT

Répondre

2

Parce que les tableaux ne sont pas destinés à la situation où vous ajoutez & supprimer des éléments, vous devez utiliser une structure de données plus appropriées.

LinkedList est le meilleur à utiliser lorsque vous vous attendez à ce qu'il y ait beaucoup d'ajouts et de suppressions au milieu ou au début de la liste.

La liste fonctionne correctement lorsque vous ajoutez et supprimez uniquement la fin.

Vous utiliseriez en important:

using System.Collections.Generic; 

et codage:

LinkedList<LinkedList<int>> grid = new LinkedList<LinkedList<int>>() 
grid.Add(new LinkedList<int>()); //repeat for each column/row 
+0

pointe Nice. J'ai utilisé la liste générique et l'algorithme est trivial. Merci :). – Ricardo

+0

Les performances devraient être meilleures aussi ... –

2

tailles Array ne sont pas dynamiques, de sorte que vous auriez à créer un nouveau tableau, remplissez les valeurs que vous souhaitez conserver et ne pas tenir compte de ceux que vous supprimez.

2

Très basique pseudocode:

removeLine(...) { 
    create array with 1 less line 
    loop through lines of original array 
     if line index == lineToRemove 
      continue loop 

removeColumns(...) { 
    create array with 1 less column 
    loop through columns of original array 
     if column index == columnToRemove 
      continue loop 
Questions connexes