Bonjour à tous !
Je fais appel à vous car j'ai un problème lors de l’exécution que je ne comprend pas...
J'ai pour devoir de faire une file doublement chaînée avec les fonctions/procédures suivantes :
-Ajout
-Suppression
-File pleine
-File vide
Voici ce que j'ai compris des files:
Le doublement chaînée consiste a avoir une circulation a double sens avec aux extrémités de la file un début et une fin.
Le principe FIFO(First In, First Out).
Donc une cellule aura un champs précédent, valeur et suivant.
Voici mon code pour l'ajout :
Aucune erreur de compilation, je le précise.
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
32 procedure InitFile; var pt_courant, temp, prem: PFileElem; i: integer; begin write('Combien d elements?'); readln(n); write('1ere valeur ? '); new(prem); readln(prem^.valeur); fin := prem^.suivant; prem^.suivant := nil; debut := prem; j := j + 1; for i := 2 to n do begin new(temp); write(i, 'ieme valeur ? '); readln(temp^.valeur); temp^.suivant := debut; debut := temp; j := j + 1; end; while temp <> nil do begin pt_courant := temp^.suivant; pt_courant^.precedent := temp; temp := temp^.suivant; end; end;
Dans le while, je chercher a créer les pointeurs des champs "précédent" de chaque cellule de la file.
Sans le while, tout fonctionne parfaitement ! Mais avec le while... Runtime Error 216 ! La fameuse...
Je ne comprend pas l'erreur... j'ai fais sur papier, pour moi sa devrait fonctionner !
Si vous connaissez une autre méthode pour créer ces pointeurs précédents, n'hésitez pas !
Voici un l'execution de mon programme sans le "While" :
Partager