Java 递归地将节点添加到特定索引处的链表中
我正在编写一个递归函数,通过递归迭代索引,然后添加项,将项添加到给定索引的列表中。该函数应接受2个参数(字符串值和整数索引),并检查索引是否有效。这里是我到目前为止所做的,它不检查有效性,只在传入一个字符串值时起作用 试验台(主) 链表类Java 递归地将节点添加到特定索引处的链表中,java,recursion,linked-list,nodes,Java,Recursion,Linked List,Nodes,我正在编写一个递归函数,通过递归迭代索引,然后添加项,将项添加到给定索引的列表中。该函数应接受2个参数(字符串值和整数索引),并检查索引是否有效。这里是我到目前为止所做的,它不检查有效性,只在传入一个字符串值时起作用 试验台(主) 链表类 public class RecLinkedList { private Node first; public RecLinkedList(){ first = null; } public boolean isEmpty() { retur
public class RecLinkedList {
private Node first;
public RecLinkedList(){
first = null;
}
public boolean isEmpty() {
return first == null;
}
public void add( String s){
first = add( s, first);
}
private Node add( String s, Node list){
if( list == null ){
return new Node(s);
}else{
list.setNext( add( s, list.getNext() ) );
return list;
}
}
public String toString() {
return helperString(first);
}
private String helperString(Node list) {
if (list.getNext() != null) {
return list.getValue() + "," + helperString(list.getNext());
}
else {
return (String) list.getValue();
}
}
我需要的帮助是,我是否需要制作另一个add函数,该函数同时接受两个参数(字符串和int值),或者我是否可以修改现有的参数?另外,至于检查索引是否有效,我真的不确定如何检查。最好编写另一个带有参数
String
和int
的add方法,因为它的行为与其他add函数不同。如果您查看许多类的JavaAPI,就会发现方法名被重载了。所以这是一个很好的实践
要确定索引是否有效,首先需要声明一个字段,该字段保存链接列表的当前大小。每次添加或删除元素时,此计数器都会更新。调用新的add方法时,首先要检查要插入新元素的索引是否小于零或大于链表的大小。如果它低于零,则这不是有效的索引。如果它大于列表的大小,那么这是没有意义的,因此您可以拒绝它,或者更可疑地将元素添加到列表的末尾。最好编写另一个带有参数
String
和int
的add方法,因为它的行为与其他add函数不同。如果您查看许多类的JavaAPI,就会发现方法名被重载了。所以这是一个很好的实践
要确定索引是否有效,首先需要声明一个字段,该字段保存链接列表的当前大小。每次添加或删除元素时,此计数器都会更新。调用新的add方法时,首先要检查要插入新元素的索引是否小于零或大于链表的大小。如果它低于零,则这不是有效的索引。如果它大于列表的大小,那么这是没有意义的,因此您可以拒绝它,或者更可疑地将元素添加到列表的末尾。最好编写另一个带有参数
String
和int
的add方法,因为它的行为与其他add函数不同。如果您查看许多类的JavaAPI,就会发现方法名被重载了。所以这是一个很好的实践
要确定索引是否有效,首先需要声明一个字段,该字段保存链接列表的当前大小。每次添加或删除元素时,此计数器都会更新。调用新的add方法时,首先要检查要插入新元素的索引是否小于零或大于链表的大小。如果它低于零,则这不是有效的索引。如果它大于列表的大小,那么这是没有意义的,因此您可以拒绝它,或者更可疑地将元素添加到列表的末尾。最好编写另一个带有参数
String
和int
的add方法,因为它的行为与其他add函数不同。如果您查看许多类的JavaAPI,就会发现方法名被重载了。所以这是一个很好的实践
要确定索引是否有效,首先需要声明一个字段,该字段保存链接列表的当前大小。每次添加或删除元素时,此计数器都会更新。调用新的add方法时,首先要检查要插入新元素的索引是否小于零或大于链表的大小。如果它低于零,则这不是有效的索引。如果它大于列表的大小,则这没有意义,因此您可以拒绝它,或者更可疑地将元素添加到列表的末尾。关于有效索引,您可以添加一个包含现有节点的大小字段
public class RecLinkedList {
private int size = 0;
//...
private Node add( String s, Node list){
if( list == null ){
this.size += 1;
return new Node(s);
}else{
list.setNext( add( s, list.getNext() ) );
return list;
}
}
//...
}
然后,在使用方法添加新节点时,可以检查索引是否大于当前大小或小于零
要在正确的位置添加节点,只需计算allready访问的节点数,当到达正确的位置时,添加节点。关于有效索引,您可以添加一个大小字段来计算现有节点
public class RecLinkedList {
private int size = 0;
//...
private Node add( String s, Node list){
if( list == null ){
this.size += 1;
return new Node(s);
}else{
list.setNext( add( s, list.getNext() ) );
return list;
}
}
//...
}
然后,在使用方法添加新节点时,可以检查索引是否大于当前大小或小于零
要在正确的位置添加节点,只需计算allready访问的节点数,当到达正确的位置时,添加节点。关于有效索引,您可以添加一个大小字段来计算现有节点
public class RecLinkedList {
private int size = 0;
//...
private Node add( String s, Node list){
if( list == null ){
this.size += 1;
return new Node(s);
}else{
list.setNext( add( s, list.getNext() ) );
return list;
}
}
//...
}
然后,在使用方法添加新节点时,可以检查索引是否大于当前大小或小于零
要在正确的位置添加节点,只需计算allready访问的节点数,当到达正确的位置时,添加节点。关于有效索引,您可以添加一个大小字段来计算现有节点
public class RecLinkedList {
private int size = 0;
//...
private Node add( String s, Node list){
if( list == null ){
this.size += 1;
return new Node(s);
}else{
list.setNext( add( s, list.getNext() ) );
return list;
}
}
//...
}
然后,在使用方法添加新节点时,可以检查索引是否大于当前大小或小于零
要将节点添加到正确的位置,只需计算已访问的节点数,当到达正确位置时,添加节点。Ok,我创建了新的添加方法public void add(String value,int index),并使用if