Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MyQueue[+T](private val rep: List[T] = Nil){
- def enqueue[S >: T](elem: S) = new MyQueue[S](elem :: rep)
- def dequeue : MyQueue[T] = rep match{
- case _::t => new MyQueue[T](t)
- case Nil => throw new UnderflowException("Empty queue")
- }
- def isEmpty = rep == Nil
- def first: T = rep match{
- case h::t => h
- case Nil => throw new UnderflowException("Empty queue")
- }
- }
- object MyQueue {
- def apply[T](xs: T*): MyQueue[T] = new MyQueue[T](xs.toList)
- def empty[T]: MyQueue[T] = new MyQueue[T](Nil)
- }
- object Tester{
- def main (args: Array[String]): Unit = {
- val queue = MyQueue.empty
- val queue1 = MyQueue()
- val queue2 = MyQueue('a', 'b', 'c')
- val queue3 = new MyQueue
- println(queue.enqueue(1).enqueue(2).dequeue.first)
- println(queue1.enqueue("first").enqueue("A").dequeue.first)
- println(queue2.dequeue.first)
- println(queue3.enqueue(1).enqueue(2).dequeue.first)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement