(***** Q1 *****) (* un tache est juste representee par sa date d'exécution) *) (* recupere la premiere tache *) let first = hd;; (* enleve la premiere tache *) let pop = tl;; (* insere une nouvelle tache *) let rec insert d = function | [] -> [d] | t::q -> if dd.(i) then ok:=false done; !ok;; verif (ref 5,[|1;2;4;3;4;99;99;99|]);; verif (ref 4,[|1;3;2;2;-1|]);; (***** Q4 *****) let rec corrige_up (n,d) i = if i>0 && d.(i) < d.(pere i) then ( swap_vect d i (pere i); corrige_up (n,d) (pere i) );; let inser (n,d) date = d.(!n)<-date; incr n; corrige_up (n,d) (!n-1);; let inser2 (n,d) date = d.(!n)<-date; let i = ref !n in while !i>0 && d.(pere !i) > d.(!i) do swap_vect d !i (pere !i); i:=pere !i; done; incr n;; let rand_tas n = let t = cree_tas n in for i=0 to n-1 do inser t (random__int n) done; t;; verif (rand_tas 20);; (***** Q5 *****) let rec corrige_down (n,d) i = let f = if fd i >= !n || d.(fg i)= !n || d.(fg !i)