Supprimer un case du tableau en langage C

olfachokri Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Dans mon prog,j'ai besoin de supprimer un case du tableau en langage C ; En fait,j'ai un tableau de structure (des noeuds) et je veux supprimer le noeud dont son indice =i tout en décalant les autres noeuds du tableau bien sure après avoir supprimer et renvoyant la nouvelle taille du tableau

Please aidez moi à trouver une solution, comment il faut procéder !!??
A voir également:

2 réponses

pkpkmépkpk Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   52
 
Bonjour,

Il faut procéder comme tu as dit.
Par contre, il faut juste prendre conscience qu'on ne "supprime" pas une case d'un tableau : la case est toujours là, c'est juste que son contenu n'a plus de sens.

Du coup, pour "supprimer" la case i tu dois simplement recopier la case i+1 dans la case i, la case i+2 dans la case i+1, etc. jusqu'à la fin du tableau, dont tu considéreras la taille diminuée de 1 à l'issue de ton opération de suppression.

A noter que cette suppression prend du temps, puisqu'il faut recopier tout ce qui est après la case supprimée.
Une autre possibilité est d'ajouter un booléen par case, qui précise si le contenu est valide ou non.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Impossible de supprimer la case d'un tableau.
Une autre possibilité serait d'utiliser un pointeur sur une zone allouée (appelé injustement tableau dynamique). Dans, ce cas, tu pourras faire un realloc() pour rétrécir la taille.

Au vu du besoin, je pense que ce n'est pas le plus adapté. Pourquoi ne pas utiliser une liste doublement chainée ? La suppression se fera en un claquement de doigt.
0