Bonjour

Voilà, je trie une liste chaînée avec un tri à bulle mais, après le tri, elle me sort des valeurs incorrectes - ce qui veux dire que mes pointeurs pointent vers des cellules mémoire qui ne sont pas celles de mon programme. Mais je ne trouve pas où ça plante.

Voici le code :
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
Procedure classer(var debutl : Pointskieur; nbskieur : integer);
 
	var
		Vactu, Vpres, Vinter : Pointskieur;
		fini, permut : boolean;
		i : integer;
	BEGIN
	WriteLn('hello de lu');
	Repeat
		fini := true;
		Vactu := debutl;
		Vpres := nil;
		while Vactu <> nil do
			begin
			permut:=false;
			if Vactu^.temps.min > Vactu^.next^.temps.min then
				begin
				fini:= false;
				permut:= true;
				end				
			else
				begin
				if (Vactu^.temps.min = Vactu^.next^.temps.min) and (Vactu^.temps.sec > Vactu^.next^.temps.sec) then
					begin
					fini:= false;
					permut:= true;
					end
				else
					begin
					if (Vactu^.temps.min = Vactu^.next^.temps.min) and (Vactu^.temps.sec = Vactu^.next^.temps.sec) 
					and (Vactu^.temps.cen > Vactu^.next^.temps.cen) then
						begin
						fini:= false;
						permut:= true;
						end;
					end;
				end;
 
			if permut then
				begin
					if Vpres = nil then
						begin
						debutl := Vactu^.next;
						Vinter := Vactu^.next^.next;
						debutl^.next := Vactu;
						Vactu^.next := Vinter;
						end
					else
						begin
						Vpres^.next := Vactu^.next;
						Vinter := Vactu^.next^.next;
						Vactu^.next^.next := Vactu;
						Vactu^.next := Vinter;
						end;
				end;
			Vactu := Vactu^.next
			end;	
	Until (fini);
end;
Je reçois donc dans cette fonction le pointeur du premier élément et le nombre d'éléments de la liste. Je fais donc une boucle sur le nombre d'éléments. Les if servent à savoir si on permute ou non. Si Vpres est vide alors ça veut dire que c'est le premier élément de la liste.

Voilà, si quelqu'un voit où ça cloche.

Merci de votre aide