mp2i-info/tp7/exo2.ml
2026-01-13 23:23:08 +01:00

44 lines
837 B
OCaml

type 'a tr = {
mutable taille : int;
mutable donnees : 'a array
};;
let creer_tr capacity init_value = {
taille = 0;
donnees = Array.make (max capacity 1) init_value
};;
let taille_tr tr = tr.taille;;
let acces_tr tr i =
if i >= tr.taille then
invalid_arg "Index bigger than tr size"
else
tr.donnees.(i);;
let modif_tr tr i value =
if i >= tr.taille then
invalid_arg "Index bigger than tr size"
else
tr.donnees.(i) <- value;;
let append_tr tr value =
let n = Array.length tr.donnees in
if tr.taille >= n then
tr.donnees <- Array.init
(n*2)
(fun i -> tr.donnees.(i mod n));
tr.donnees.(tr.taille) <- value;
tr.taille <- tr.taille + 1
;;
let pop_tr tr =
if tr.taille <= 0 then
invalid_arg "Empty tr"
else
tr.taille <- tr.taille - 1;
tr.donnees.(tr.taille)
;;