add peek to queue interface
- update travis file - fix typo
This commit is contained in:
parent
f9d26d9738
commit
8df221cd1b
10
.travis.yml
10
.travis.yml
@ -1,8 +1,18 @@
|
||||
language: java
|
||||
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
- oraclejdk9
|
||||
- openjdk10
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- ~/.gradle/caches/
|
||||
- ~/.gradle/wrapper/
|
||||
|
||||
before_install:
|
||||
- chmod +x gradlew
|
||||
- chmod +x gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
script:
|
||||
- ./gradlew test build
|
||||
|
@ -30,6 +30,7 @@ import arrow.core.Option
|
||||
interface Queue<T> {
|
||||
fun enqueue(elem: T)
|
||||
fun dequeue(): Option<T>
|
||||
fun peek(): Option<T>
|
||||
fun isEmpty(): Boolean
|
||||
fun size(): Int
|
||||
fun clean()
|
||||
|
@ -51,10 +51,11 @@ class ResizingArrayQueue<T>(capacity: Int = DEFAULT_CAPACITY) : Queue<T> {
|
||||
}
|
||||
|
||||
override fun dequeue(): Option<T> {
|
||||
if (isEmpty())
|
||||
return None
|
||||
val elem = peek()
|
||||
|
||||
if (elem is None)
|
||||
return elem
|
||||
|
||||
val elem = queue[head]
|
||||
queue[head] = null
|
||||
head = (head + 1) % queue.size
|
||||
size--
|
||||
@ -62,7 +63,14 @@ class ResizingArrayQueue<T>(capacity: Int = DEFAULT_CAPACITY) : Queue<T> {
|
||||
if (isOneQuarterFull())
|
||||
resizeArray(queue.size / RESIZE_FACTOR)
|
||||
|
||||
return elem.toOption()
|
||||
return elem
|
||||
}
|
||||
|
||||
override fun peek(): Option<T> {
|
||||
if (isEmpty())
|
||||
return None
|
||||
|
||||
return queue[head].toOption()
|
||||
}
|
||||
|
||||
private fun resizeArray(capacity: Int) {
|
||||
|
@ -26,6 +26,7 @@
|
||||
package it.norangeb.algorithms.datastructures.queue
|
||||
|
||||
import arrow.core.None
|
||||
import arrow.core.Some
|
||||
import arrow.core.getOrElse
|
||||
import org.amshove.kluent.`should be equal to`
|
||||
import org.junit.jupiter.api.Test
|
||||
@ -62,6 +63,16 @@ class ResizingArrayQueueTest {
|
||||
queue.size() `should be equal to` 0
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testPeek() {
|
||||
val queue = ResizingArrayQueue<Int>()
|
||||
|
||||
(queue.peek() is None) `should be equal to` true
|
||||
queue.enqueue(1)
|
||||
(queue.peek() is Some) `should be equal to` true
|
||||
queue.size() `should be equal to` 1
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIncreaseSize() {
|
||||
val queue = ResizingArrayQueue<Int>()
|
||||
|
@ -71,7 +71,7 @@ class ResizingArrayStackTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIncrease() {
|
||||
fun testIncreaseSize() {
|
||||
val stack = ResizingArrayStack<Int>()
|
||||
|
||||
stack.push(1)
|
||||
@ -82,7 +82,7 @@ class ResizingArrayStackTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDescrese() {
|
||||
fun testDecreaseSize() {
|
||||
val stack = ResizingArrayStack<Int>()
|
||||
|
||||
stack.push(1)
|
||||
|
Loading…
Reference in New Issue
Block a user