Files
Yudong Jin 772183705e Add ru version (#1865)
* Add Russian docs site baseline

* Add Russian localized codebase

* Polish Russian code wording

* Update ru code translation.

* Update code translation and chapter covers.

* Fix pythontutor extraction.

* Add README and landing page.

* placeholder of profiles

* Use figures of English version

* Remove chapter paperbook
2026-03-28 04:24:07 +08:00

75 lines
2.1 KiB
Kotlin

/**
* File: array_stack.kt
* Created Time: 2024-01-25
* Author: curtishd (1023632660@qq.com)
*/
package chapter_stack_and_queue
/* Стек на основе массива */
class ArrayStack {
// Инициализация списка (динамического массива)
private val stack = mutableListOf<Int>()
/* Получение длины стека */
fun size(): Int {
return stack.size
}
/* Проверка, пуст ли стек */
fun isEmpty(): Boolean {
return size() == 0
}
/* Поместить в стек */
fun push(num: Int) {
stack.add(num)
}
/* Извлечь из стека */
fun pop(): Int {
if (isEmpty()) throw IndexOutOfBoundsException()
return stack.removeAt(size() - 1)
}
/* Доступ к верхнему элементу стека */
fun peek(): Int {
if (isEmpty()) throw IndexOutOfBoundsException()
return stack[size() - 1]
}
/* Преобразовать List в Array и вернуть */
fun toArray(): Array<Any> {
return stack.toTypedArray()
}
}
/* Driver Code */
fun main() {
/* Инициализация стека */
val stack = ArrayStack()
/* Помещение элемента в стек */
stack.push(1)
stack.push(3)
stack.push(2)
stack.push(5)
stack.push(4)
println("Стек stack = ${stack.toArray().contentToString()}")
/* Доступ к верхнему элементу стека */
val peek = stack.peek()
println("Верхний элемент peek = $peek")
/* Извлечение элемента из стека */
val pop = stack.pop()
println("Извлеченный элемент pop = $pop, stack после извлечения = ${stack.toArray().contentToString()}")
/* Получение длины стека */
val size = stack.size()
println("Длина стека size = $size")
/* Проверка на пустоту */
val isEmpty = stack.isEmpty()
println("Пуст ли стек = $isEmpty")
}