Bonjour,

je suis en train de coder en java une liste doublement chaînée, et, pour m'aider, je désire m'inspirer d'un code que j'ai trouvé sur un site internet écrit en C:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int supp(dl_Liste *liste, int pos){
  int i;
  dl_Element *supp_element,*courant;
 
  if(liste->taille == 0)
    return -1;
 
  if(pos == 1){ /* suppresion de 1er élément */
    supp_element = liste->debut;
    liste->debut = liste->debut->suivant;
    if(liste->debut == NULL)
      liste->fin = NULL;
    else
      liste->debut->precedent == NULL;
  }else if(pos == liste->taille){ /* suppression du dernier élément */
    supp_element = liste->fin;
    liste->fin->precedent->suivant = NULL;
    liste->fin = liste->fin->precedent;
  }else { /* suppression ailleurs */
    courant = liste->debut;
      for(i=1;i<pos;++i)
        courant = courant->suivant;
    supp_element = courant;
    courant->precedent->suivant = courant->suivant;
    courant->suivant->precedent = courant->precedent;
  }
  free(supp_element->donnee);
  free(supp_element);
  liste->taille--;
  return 0;
}
Mais voilà, je ne comprends pas certaines petites choses:

- que signifie: dl_Liste *liste? Je ne comprends pas l'étoile
- idem ici: dl_Element *supp_element,*courant
- que signifie: free(supp_element->donnee);
free(supp_element);
Je ne comprends pas le free.

En vous remerciant tous par avance et en vous souhaitant un agréable lundi.

Johnny3