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
|
type
tpaquet=^tcarte;
tcarte=record
couleur:integer ;
valeur:integer ;
suiv:tpaquet ;
end;
-------------------------------------
function melangerecursif(p,paquet1,paquet2:tpaquet):tpaquet;
var liste_temp:tpaquet;
begin
if not est_liste_vide(paquet1) and not est_liste_vide(paquet2) then
melangerecursif:=melangerecursif(p,ajout_queue(suivant(paquet1),p),(ajout_queue(suivant(paquet2),p)));
if est_liste_vide(paquet1) and not est_liste_vide(paquet2) then
melangerecursif:=concatene (paquet2,p);
if est_liste_vide(paquet2) and not est_liste_vide(paquet1) then
melangerecursif:=concatene (paquet1,p) ;
end;
(****************************************************)
(****************************************************)
(****************************************************)
procedure coupe_paquet_aleat(var p,paquet1,paquet2:tpaquet);
var nbcoupe:integer;
begin
randomize;
nbcoupe:=random(maxcoul*maxval);
for i:= 1 to nbcoupe do
begin
paquet1:=ajout_queue(tete(p),paquet1);
p:=suivant(p);
end;
paquet2:=p;
p:=liste_vide;
writeln(nbcoupe);
melangerecursif(p,paquet1,paquet2);
end;
(**********************************************) |
Partager