Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (*Moduł Kolejki*)
- module type OBSLUGA_KOLEJKI =
- sig
- type 'a tk =KolejkaPusta | Skladowa of 'a * 'a tk
- exception Pusta of string
- val tworz_pusta: unit -> 'a tk
- val do_kolejki: 'a * 'a tk -> 'a tk
- val usun: 'a * 'a tk -> 'a tk
- val pierwszy_element: 'a tk -> 'a
- val kolejka_pusta: 'a tk -> bool
- val do_listy:'a tk -> 'a list
- val lista_par: 'a tk-> ('a * int) list
- end;;
- module Obsluga_kolejki (Ord: ORDER) : OBSLUGA_KOLEJKI=
- struct
- type 'a tk= KolejkaPusta | Skladowa of 'a * 'a tk
- exception Pusta of string
- let tworz_pusta()=KolejkaPusta
- let do_kolejki (elem,lst)=
- let rec szukaj(elem,lst)= match lst with
- | KolejkaPusta->Skladowa(elem,KolejkaPusta)
- | Skladowa(a,b)->Skladowa(a,szukaj(elem,b))
- in szukaj(elem,lst)
- let usun (elem,lst)=
- let rec szukaj(elem,lst)= match lst with
- | KolejkaPusta->KolejkaPusta
- | Skladowa(a,b) when a=elem -> b
- | Skladowa(a,b)->Skladowa(a,szukaj(elem,b))
- in szukaj(elem,lst)
- let pierwszy_element(lst)=match lst with
- | KolejkaPusta -> raise(Pusta "Nie ma pierwszego elementu")
- | Skladowa(a,b)-> a
- let kolejka_pusta(lst)= lst=KolejkaPusta
- let do_listy(lst)=
- let rec lista(lst,wynik)=match lst with
- | KolejkaPusta->List.rev wynik
- | Skladowa(a,b)->lista(b,a::wynik)
- in lista(lst,[])
- let lista_par(lst)=
- let rec lista(lst,wynik,index)=match lst with
- | KolejkaPusta->List.sort compare wynik
- | Skladowa(a,b)->lista(b,(a,index)::wynik,index+1)
- in lista(lst,[],0)
- end;;
- module IntKolejka = Obsluga_kolejki (IntOrder);;
- let q=IntKolejka.tworz_pusta();;
- IntKolejka.kolejka_pusta(q);;
- let q=IntKolejka.do_kolejki(1,q);;
- let q=IntKolejka.do_kolejki(5,q);;
- let q=IntKolejka.do_kolejki(3,q);;
- let q=IntKolejka.do_kolejki(8,q);;
- let q=IntKolejka.do_kolejki(6,q);;
- let q=IntKolejka.do_kolejki(2,q);;
- IntKolejka.kolejka_pusta(q);;
- IntKolejka.pierwszy_element(q);;
- let q=IntKolejka.usun(8,q);;
- IntKolejka.do_listy(q);;
- IntKolejka.lista_par(q);;
- module OsobaKolejka = Obsluga_kolejki (PersonOrder);;
- let o=OsobaKolejka.tworz_pusta();;
- let o=OsobaKolejka.do_kolejki(("Adam","Pyszczek"),o);;
- let o=OsobaKolejka.do_kolejki(("Wojtek","Rak"),o);;
- let o=OsobaKolejka.do_kolejki(("Adam","Pyszczek"),o);;
- let o=OsobaKolejka.do_kolejki(("Kamil","Pyszczek"),o);;
- let o=OsobaKolejka.do_kolejki(("Pamela","Rak"),o);;
- let o=OsobaKolejka.do_kolejki(("Zbigniew","Rak"),o);;
- OsobaKolejka.pierwszy_element(o);;
- let o=OsobaKolejka.usun(("Adam","Pyszczek"),o);;
- OsobaKolejka.do_listy(o);;
- OsobaKolejka.lista_par(o);;
- (*************************************************)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement