我需要编写一个方法,以递归方式将项目插入到单链接的排序列表中。列表的节点类如下所示:
protected class Node<T> {
protected Node(T data) {
this.data = data;
}
protected T data;
protected Node<T> next;
}
protected Node<E> head;
}
方法签名是:void insert(E data)。 我可以迭代地执行此操作,但我似乎无法绕过如何以递归方式执行此操作。任何人都可以提供任何见解吗?
答案 0 :(得分:1)
假设您应该在列表末尾插入,只需this.next
重复this.next
null
。
public void insert(E data) {
if (this.next == null) {
// we're at the end, so actually do the insert
// if you can do it iteratively, you should already know what to do here
} else {
this.next.insert(data);
}
}
答案 1 :(得分:0)
创建一个函数,该函数接受一个起始节点和要插入的数据。
如果该节点是放置数据的正确位置,只需插入即可。
如果没有,请递归调用该函数以尝试下一个节点。