fun <T> deleteMiddle(list: MutableList<T>) {
if (list.isEmpty()) return
val mid = list.size / 2 // 0‑based middle index
deleteKth(list, mid)
}
private fun <T> deleteKth(list: MutableList<T>, k: Int) {
if (k == 0) {
list.removeAt(list.lastIndex) // remove middle
return
}
val top = list.removeAt(list.lastIndex)
deleteKth(list, k - 1)
list.add(top) // restore elements
}
fun main() {
val list = mutableListOf(1, 2, 3, 4, 5, 6, 7)
deleteMiddle(list)
println(list)
}
/*
run:
[1, 2, 3, 5, 6, 7]
*/