讨论/《算法面试题汇总》 - 扁平化嵌套列表迭代器/
《算法面试题汇总》 - 扁平化嵌套列表迭代器
class NestedIterator(nestedList: List<NestedInteger>) {
    var current = 0
    val list = nestedList
    val stack:Stack<NestedIterator> = Stack()
    fun next(): Int {
        if (list[current].isInteger()) {
            val integer = list[current].getInteger()!!
            current++
            return integer
        }else{
            return stack.peek().next()
        }
    }

    fun hasNext(): Boolean {
        if (stack.empty().not()) {
            if (!stack.peek().hasNext()) {
                //println("当前栈顶没有数据了,弹出栈顶元素")
                stack.pop()
                current++
            }else{
                return true
            }
        }
        while (current < list.size) {
            if (list[current].isInteger()) {
                //println("有一个数字"+list[current].getInteger()+" return true")
                return true
            }else{
                //println("链表")
                val nestedIterator = NestedIterator(list[current].getList()!!)
                if (nestedIterator.hasNext()) {
                    //println("有下一个")
                    stack.push(nestedIterator)
                    return true
                }else{
                    //println("是一个空的列表 +1")
                    current++
                }
            }
        }
        return false
    }
}