44 lines
837 B
OCaml
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)
|
|
;;
|