Skip to content

Latest commit

 

History

History
33 lines (27 loc) · 854 Bytes

File metadata and controls

33 lines (27 loc) · 854 Bytes
class MyStack() {

    private var valueQueue = java.util.LinkedList<Int>()
    private var backupQueue = java.util.LinkedList<Int>()
    private var top: Int? = null

    fun push(x: Int) {
        top = x
        valueQueue.add(x)
    }

    fun pop(): Int {
        // Move all items to backup queue, and leave the rear item to pop
        while (valueQueue.size > 1) {
            top = valueQueue.remove()
            backupQueue.add(top!!)
        }
        val value = valueQueue.remove()

        // Copy backup queue back to value queue
        val temp = backupQueue
        backupQueue = valueQueue
        valueQueue = temp
        return value
    }

    fun top(): Int = top!!
    fun empty(): Boolean = valueQueue.isEmpty()
}