Bonjour,
Je suis étudiant en informatique et j'ai un problème avec un exercice.
Merci de votre aide.
Vincent
La question est :
Ecrire la procédure FirstToEnd.
Elle supprime le premier élément de la Liste L et l'ajoute à la fin de cette même liste. Si la liste est vide ou si elle ne contient qu'un seul élément, la procédure est sans effet.
voici le code que j'ai écrit et qui ne passe pas à la compilation :
(erreur du style : la mémoire ne peut pas être 'read')
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 type PCellule = ^Cellule; Cellule = record valeur: integer; suivant: PCellule; end; procedure ajouter(var liste: PCellule; valeur: integer); var p: PCellule; begin new(p); p^.valeur := valeur; p^.suivant := liste; liste := p; end; procedure afficher(liste: PCellule); var p: PCellule; begin p := liste; while p <> nil do begin writeln(p^.valeur); p := p^.suivant; end; end; procedure vider(liste: PCellule); var p, r: PCellule; begin p := liste; while (p <> nil) do begin r := p^.suivant; dispose(p); p := r; end; end; Procedure FirstToEnd(Var liste:Pcellule); Var p,x,y :Pcellule; n :integer; Begin p:= liste; if (p<> nil) and (p^.suivant <> nil) then begin new(x); x^.valeur := p^.valeur; x^.suivant := nil; y := p^.suivant; dispose (p); while (y^.suivant <> nil) do y := y^.suivant; y^.suivant := x ; end; End; var liste: PCellule; nombre: integer; begin writeln('Entrez les nombres à ajouter (0 pour quitter) : '); readln(nombre); while nombre <> 0 do begin ajouter(liste, nombre); readln(nombre); end; writeln('Valeurs de la liste : '); afficher(liste); firstToEnd(liste); afficher(liste); readln; end.
Partager