J'écris un programme qui nécessite d'utiliser des listes pour stocker des informations mais j'ai rencontré des problèmes (d'habitude j'utilise plutôt des enregistrements RECORD mais ils ne supportent pas la récursivité structurelle), alors j'ai isolé la manipulation de listes dans ce petit programme d'exemple :
C'est vraiment un programme très simple qui demande trois chiffres pour en faire une liste l1, puis écrit la liste.
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
33
34
35
36
37
38
39
40
41
42
43
44 PROGRAM remplisseurDeListe; TYPE liste = ^cellule; cellule = RECORD tete:integer; queue:liste END; VAR l1:liste; FUNCTION remplirListe:liste; VAR i:integer; BEGIN writeln('allo'); readln; remplirListe:=NIL; remplirListe^.queue:=remplirListe; writeln('nombre ?'); readln(i); remplirListe^.tete:=i; remplirListe^.queue:=remplirListe; writeln('nombre ?'); readln(i); remplirListe^.tete:=i; remplirListe^.queue:=remplirListe; writeln('nombre ?'); readln(i); remplirListe^.tete:=i END; PROCEDURE ecrireListe(VAR l:liste); BEGIN WHILE l<>NIL DO BEGIN writeln(l^.tete); l^.tete:=l^.queue^.tete; l^.queue:=l^.queue^.queue END END; BEGIN l1:=remplirListe; ecrireListe(l1); readln END.
Seulement chez moi le programme affiche "allo" et plante. Je crois que j'ai fait une erreur dans la structure de ma liste mais je ne vois pas où.
Est-ce que vous voyez d'où ça pourrait venir ?
Partager