Pouknouki

Untitled

Apr 5th, 2017
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.15 KB | None | 0 0
  1. (* VECTEUR DYNAMIQUE *)
  2.  
  3. type 'a vecteur = { mutable l:int; mutable i:int; mutable v: 'a vect };;
  4.  
  5. let vecteur_el e =
  6.     { l = 1; i = 0; v = [| e |] };;
  7.  
  8. let vecteur =
  9.     { l = 0; i = -1; v = [| |] };;
  10.  
  11. let ajouter_vecteur v e =
  12.     if v.l > 0 then
  13.     begin
  14.             if v.i = v.l - 1 then
  15.             begin
  16.                 let r = (make_vect (2 * v.l) 0) in
  17.                 for j = 0 to v.l - 1 do
  18.                     r.(j) <- v.v.(j);
  19.                 done;
  20.                 v.v <- r;
  21.                 v.l <- 2 * v.l;
  22.             end;
  23.             v.i <- v.i + 1;
  24.             v.v.(v.i) <- e;
  25.         end
  26.     else
  27.         begin
  28.             v.v <- [| e |];
  29.            v.l <- 1;
  30.            v.i <- 0;
  31.         end;;
  32.  
  33. let supprimer_element v ind =
  34.     if ind > v.i then
  35.         failwith "Indice hors limites.";
  36.     v.i <- v.i - 1;
  37.     for i = ind + 1 to v.l - 1 do
  38.         v.v.(i - 1) <- v.v.(i);
  39.     done;;
  40.  
  41. let supprimer_fin v =
  42.     if v.i > -1 then v.i <- v.i - 1 else failwith "Vecteur vide.";;
  43.  
  44. let dans_vecteur v e =
  45.     let trouve = ref(false) in
  46.     for i = 0 to v.i - 1 do
  47.         if v.v.(i) = e then trouve := true
  48.     done;
  49.     !trouve;;
  50.  
  51. let v = vecteur_el 0 in supprimer_fin v;
  52. for i = 0 to 1000 do
  53.     ajouter_vecteur v i;
  54. done;
  55. v;;
Advertisement
Add Comment
Please, Sign In to add comment