Advertisement
Guest User

zad 1 lab 11

a guest
Jan 17th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.58 KB | None | 0 0
  1. (*Moduł Kolejki*)
  2. module type OBSLUGA_KOLEJKI =
  3. sig
  4.   type 'a tk =KolejkaPusta | Skladowa of 'a * 'a tk
  5.   exception Pusta of string
  6.   val tworz_pusta: unit -> 'a tk
  7.   val do_kolejki: 'a * 'a tk -> 'a tk
  8.   val usun: 'a * 'a tk -> 'a tk
  9.   val pierwszy_element: 'a tk -> 'a
  10.   val kolejka_pusta: 'a tk -> bool
  11.     val do_listy:'a tk -> 'a list
  12.     val lista_par: 'a tk-> ('a * int) list
  13. end;;
  14. module Obsluga_kolejki (Ord: ORDER) : OBSLUGA_KOLEJKI=
  15.     struct
  16.         type 'a tk= KolejkaPusta | Skladowa of 'a * 'a tk
  17.          exception Pusta of string
  18.         let tworz_pusta()=KolejkaPusta
  19.         let do_kolejki (elem,lst)=
  20.                 let rec szukaj(elem,lst)= match lst with
  21.                 | KolejkaPusta->Skladowa(elem,KolejkaPusta)
  22.                 | Skladowa(a,b)->Skladowa(a,szukaj(elem,b))
  23.                 in szukaj(elem,lst)
  24.         let usun (elem,lst)=
  25.                 let rec szukaj(elem,lst)= match lst with
  26.                 | KolejkaPusta->KolejkaPusta
  27.                 | Skladowa(a,b) when a=elem -> b
  28.                 | Skladowa(a,b)->Skladowa(a,szukaj(elem,b))
  29.                 in szukaj(elem,lst)
  30.         let pierwszy_element(lst)=match lst with
  31.             | KolejkaPusta -> raise(Pusta "Nie ma pierwszego elementu")
  32.             | Skladowa(a,b)-> a
  33.         let kolejka_pusta(lst)= lst=KolejkaPusta
  34.         let do_listy(lst)=
  35.             let rec lista(lst,wynik)=match lst with
  36.                 | KolejkaPusta->List.rev wynik
  37.                 | Skladowa(a,b)->lista(b,a::wynik)     
  38.                 in lista(lst,[])               
  39.         let lista_par(lst)=
  40.             let rec lista(lst,wynik,index)=match lst with
  41.                 | KolejkaPusta->List.sort compare wynik
  42.                 | Skladowa(a,b)->lista(b,(a,index)::wynik,index+1)
  43.                 in lista(lst,[],0) 
  44.         end;;
  45.  
  46. module IntKolejka = Obsluga_kolejki (IntOrder);;
  47. let q=IntKolejka.tworz_pusta();;
  48. IntKolejka.kolejka_pusta(q);;
  49. let q=IntKolejka.do_kolejki(1,q);;
  50. let q=IntKolejka.do_kolejki(5,q);;
  51. let q=IntKolejka.do_kolejki(3,q);;
  52. let q=IntKolejka.do_kolejki(8,q);;
  53. let q=IntKolejka.do_kolejki(6,q);;
  54. let q=IntKolejka.do_kolejki(2,q);;
  55. IntKolejka.kolejka_pusta(q);;
  56. IntKolejka.pierwszy_element(q);;
  57. let q=IntKolejka.usun(8,q);;
  58. IntKolejka.do_listy(q);;
  59. IntKolejka.lista_par(q);;
  60.  
  61. module OsobaKolejka = Obsluga_kolejki (PersonOrder);;
  62. let o=OsobaKolejka.tworz_pusta();;
  63. let o=OsobaKolejka.do_kolejki(("Adam","Pyszczek"),o);;
  64. let o=OsobaKolejka.do_kolejki(("Wojtek","Rak"),o);;
  65. let o=OsobaKolejka.do_kolejki(("Adam","Pyszczek"),o);;
  66. let o=OsobaKolejka.do_kolejki(("Kamil","Pyszczek"),o);;
  67. let o=OsobaKolejka.do_kolejki(("Pamela","Rak"),o);;
  68. let o=OsobaKolejka.do_kolejki(("Zbigniew","Rak"),o);;
  69. OsobaKolejka.pierwszy_element(o);;
  70. let o=OsobaKolejka.usun(("Adam","Pyszczek"),o);;
  71. OsobaKolejka.do_listy(o);;
  72. OsobaKolejka.lista_par(o);;
  73. (*************************************************)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement