Décalage indice d'un tableau
Bonsoir à tous,
Dans le cadre d'un exercice je travaille avec un tableau de pointeur du type Livre (type créé par moi même) afin de gérer une "bibliothèque".
J'aimerai écrire une fonction qui permet, à partir d'un indice du tableau, de décaler tous les livres d'un tableau de livre vers la droite.
Le tableau a suffisamment de place pour le permettre.
La signature de la fonction : void decalerStock (Livre *s, int taille, int indice);, indice à partir duquel il faut décaler les éléments de s & taille : nombre d'éléments dans s.
Voici ma proposition :
Code:
1 2 3 4 5 6 7 8 9 10
| Livre *intermediaire = malloc( (taille-indice)*sizeof(Livre)); //j'alloue un tableau intermédiaire de la taille exacte nécessaire
for(int i=indice ; i<taille; ++i){ //je remplis mon tableau intermediaire des taches à déplacer
intermediaire[i-indice]=s[i];
}
for(int j=indice+1 ; j<=taille ; ++j){
s[j]=intermediaire[j-indice-1];
}
free((void*)intermediaire); |
J'ai l'impression cependant que ça revient à faire :
Code:
1 2 3
| for(int i=taille-1 ; i>indice ; --i){
s[i]=s[i-1]; //on fait pointer chaque indice de i vers l'indice précédent
} |
Mais dans les 2 cas, j'ai l'impression que je fais une erreur au niveau des pointeurs, pouvez-vous m'aider svp ?
Merci d'avance,
EDIT :
En schématisant le problème, j'ai réalise que chaque pointeur d'indice i doit pointer vers l'adresse contenue par le pointeur d'indice i-1
Cela reviendrait à faire :
Code:
1 2 3
| for(int i=taille ; i>indice ; --i){
s[i]=*s[i-1]; Le pointeur i (de type livre) pointe vers l'adresse contenue par le pointeur i-1
} |
Cependant, ai-je le droit d'écrire cela (notamment *s[i-1] dans le cas où s est de type Livre que j'ai créé)
Merci encore d'avance,