1
(***********************************************************************)
5
(* Pierre Weis, projet Cristal, INRIA Rocquencourt *)
7
(* Copyright 2001 Institut National de Recherche en Informatique et *)
8
(* en Automatique. All rights reserved. This file is distributed *)
9
(* only by permission. *)
11
(***********************************************************************)
15
| Vide | File of int * 'a * 'a t * 'a t;;
19
let rec enl�ve_sommet = function
20
| Vide -> raise File_vide
21
| File(prio, elt, Vide, Vide) -> Vide
22
| File(prio, elt, gauche, Vide) -> gauche
23
| File(prio, elt, Vide, droite) -> droite
24
| File(prio, elt, (File(prio_g, elt_g, _, _) as gauche),
25
(File(prio_d, elt_d, _, _) as droite)) ->
27
then File(prio_g, elt_g, enl�ve_sommet gauche, droite)
28
else File(prio_d, elt_d, gauche, enl�ve_sommet droite);;
30
let extraire = function
31
| Vide -> raise File_vide
32
| File(prio, elt, _, _) as file -> (prio, elt, enl�ve_sommet file);;
34
let rec ajoute file prio elt =
37
File(prio, elt, Vide, Vide)
38
| File(prio1, elt1, gauche, droite) ->
40
then File(prio, elt, ajoute droite prio1 elt1, gauche)
41
else File(prio1, elt1, ajoute droite prio elt, gauche);;