我正在使用kotlin实现双向链表。但是我收到了StackOverflow错误
主要
fun main(args: Array<String>) {
val doublyLinkedList = DoublyLinkedList()
doublyLinkedList.push(5)
doublyLinkedList.push(6)
doublyLinkedList.push(7)
doublyLinkedList.push(8)
doublyLinkedList.push(9)
println(doublyLinkedList.headNode)
}
双向链接列表
class DoublyLinkedList {
var headNode: DNode? = null
var tailNode: DNode? = null
var length: Int = 0
fun isEmpty(): Boolean = length == 0
fun push(value:Any) {
val newNode = DNode(value =value )
if (isEmpty()){
tailNode = newNode
}else{
headNode?.prevNode = newNode
}
newNode.nextNode = headNode
headNode = newNode
length++
}
}
数据类
data class DNode(var value: Any,
var prevNode: DNode? = null,
var nextNode: DNode? = null)
错误
Exception in thread "main" java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:449)
at java.lang.StringBuilder.append(StringBuilder.java:136)
at ds.doublyLinkedList.DNode.toString(DNode.kt)
在第一个元素按下后,它在线程“ main” java.lang.StackOverflowError 中显示异常。为什么会发生这种想法?
答案 0 :(得分:1)
已解决
我没有使用DataClass,而是使用了class。因为在Kotlin数据类中,编译器会自动从主要构造函数中声明的所有属性中派生以下成员: