File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed
Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change 1+ package ch09_queue
2+
3+ import scala .reflect .ClassTag
4+
5+ class CircularQueue [T : ClassTag ](capacity : Int ) extends DemoQueue [T ] {
6+
7+ var items : Array [T ] = new Array [T ](capacity)
8+ var head = 0
9+ var tail = 0
10+
11+
12+ override def enqueue (data : T ): Unit = {
13+ require((tail + 1 ) % capacity != head, " queue is full" )
14+ items(tail) = data
15+ tail = (tail + 1 ) % capacity
16+ size += 1
17+ }
18+
19+ override def dequeue (): Option [T ] = {
20+ if (head == tail) {
21+ None
22+ } else {
23+ size -= 1
24+ val result = Some (items(head))
25+ head = (head + 1 ) % capacity
26+ result
27+ }
28+ }
29+ }
Original file line number Diff line number Diff line change 1+ package ch09_queue
2+
3+ class CircularQueueTest extends DemoQueueTest {
4+
5+ override def getInstance (): DemoQueue [Int ] = new CircularQueue [Int ](15 )
6+ }
You can’t perform that action at this time.
0 commit comments