Prsentation Chanage dynamique Retour sur les tableaux Allocation
Présentation • Chaînage dynamique –Retour sur les tableaux –Allocation dynamique –Liens entre les données –Chaînage dynamique –Création de la classe Noeud –Exemples
Chaînage dynamique Retour sur les tableaux [ ] –Les tableaux en java sont statiques • On ne peut pas augmenter ou diminuer le nombre de cases d’un tableau en cours d’exécution. • Allocation dynamique • Lorsqu’on crée un objet (new), l’espace mémoire est alloué en cours d’exécution. • Nous pouvons libérer l’espace mémoire d’un objet en cours d’exécution. • Nous pouvons conserver des données à l’aide d’un objet. • Truc : Mettre les données dans des objets plutôt que dans un tableau.
Chaînage dynamique Liens entre les données –Dans un tableau statique les données sont consécutives en mémoire. –Les objets ne sont pas consécutifs en mémoire. • Tableau 1 5 7 9 11 15 2 17 8 • Objets 17 5 1 7 2 15 8 9 11
Chaînage dynamique Il faut prévoir un mécanisme pour faire le liens entre les objets pour simuler un tableau. • Chaînage dynamique –La stratégie est de créer une structure qui contient l’objet et un lien vers la donnée suivante. –On appelle un nœud, la structure qui contient l’objet et le lien vers le suivant. 1 Lien 5 Lien 7 Lien
La classe Nœud : //Une classe interne et ainsi on peut accéder directement aux //attributs à partir de la classe parent. Public class Nœud{ //attributs, l’objet + le lien private Object element; private Nœud suivant; //constructeur public Nœud(Object element, Nœud suivant){ this. element = element; this. suivant = suivant; }
Chaînage dynamique Exemple : Nœud tableau; //insertion d’une donnée dans le tableau = new Nœud(new Integer(1), null); Enveloppeur (wrapper) //insertion d’une donnée à la suite Noeud nœud = new Nœud(new Integer(5), null); tableau. suivant = noeud; tableau 1 noeud 5 null noeud
Récupérer un élément dans le tableau (équivalent à tableau [n]) //Dans cet exemple, on ne lève pas d’exception si n invalide public Object get. Element(int n){ //on crée un nœud qu’on place au début du tableau Nœud position = tableau; int i = 1; /On se déplace tant qu’on a pas trouvé ce qu’on cherche ou //qu’on a pas atteint la fin du tableau (null) while(i != n && position != null){ position = position. suivant; i++; } if(position != null) return position. element; return null; }
- Slides: 7