Exercice : Positionnez-vous !
Voici une fonction manipulant une liste, ainsi qu'un appel :
1
void fonct(Tmaillon **ptliste, int i, int pos){
2
Tmaillon *ptaux=(Tmaillon *)malloc(sizeof(Tmaillon)) ;
3
ptaux->val=i ;
4
while(*ptliste !=NULL && pos) {
5
*liste=(*ptliste)->lien ;
6
--pos ;
7
}
8
ptaux->lien=*ptliste ;
9
*ptliste=ptaux ;
10
return ;
11
}
12
...
13
fonc(li, n, rg) ;
void fonct(Tmaillon **ptliste, int i, int pos){ Tmaillon *ptaux=(Tmaillon *)malloc(sizeof(Tmaillon)) ; ptaux->val=i ; while(*ptliste !=NULL && pos) { *liste=(*ptliste)->lien ; --pos ; } ptaux->lien=*ptliste ; *ptliste=ptaux ; return ; } ... fonc(li, n, rg) ;
Validez les affirmations exactes.
Votre choixChoix attenduRéponse
Cette fonction répond à l'objectif suivant : insertion de i dans la liste pointée par ptliste à la position pos et retour par le pointeur ptliste de l'adresse de l'élément de i. Nous avons donc en retour une liste amputée de tous les éléments de tête de position < pos.
Nous voyons bien que si la taille de la liste est inférieure à pos, nous sortons de la boucle avec *liste==NULL
. L'élément de i contiendra un lien vide. Le pointeur modifié permettra seulement un accès au nouvel élément.