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 :

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.
C'est vraiment un programme très simple qui demande trois chiffres pour en faire une liste l1, puis écrit la liste.
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 ?