Я пытался создать метод get для связанного списка. Он принимает позицию int в качестве аргумента и возвращает элемент списка в данной позиции (позиция начинается с нуля).Связанный список get method using recursive method
Я думаю, что моя логика правильная, но не компилируется. Может ли кто-нибудь указать, что я сделал неправильно здесь?
abstract public class AbstractListNode {
abstract public Object first ();
abstract public AbstractListNode rest ();
abstract public boolean isEmpty ();
abstract public int size();
abstract public Object get(int index);
// Every other list-processing method goes here.
}
class NonemptyListNode extends AbstractListNode {
private Object myFirst;
private AbstractListNode myRest;
// cons in Scheme.
public NonemptyListNode (Object first, AbstractListNode rest) {
myFirst = first;
if (rest == null) {
myRest = new EmptyListNode ();
} else {
myRest = rest;
}
}
public NonemptyListNode (Object first) {
this (first, new EmptyListNode ());
}
// car in Scheme.
public Object first () {
return myFirst;
}
// cdr in Scheme.
public AbstractListNode rest () {
return myRest;
}
public boolean isEmpty () {
return false;
}
public int size () {
return 1+myRest.size();
}
public Object get(int index){
if(index+1 > this.size())
throw new IllegalArgumentException ("Out of Range");
else if(index == 0){
return myFirst;
}
else{
index = index-1;
AbstractListNode l = this.myRest;
l.get(index);
}
}
}
class EmptyListNode extends AbstractListNode {
public EmptyListNode () {
}
public Object first () {
throw new IllegalArgumentException ("There is no 'first' value stored in an EmptyListNode.");
}
public AbstractListNode rest () {
throw new IllegalArgumentException ("No elements follow an EmptyListNode.");
}
public boolean isEmpty () {
return true;
}
public int size() {
return 0;
}
public Object get(int index){
throw new IllegalArgumentException ("Out of Range");
}
}
Если вы получаете подборку ошибка, вы должны действительно сказать, что это такое и где он подходит ... так что нам не нужно копировать весь ваш код и попытаться скомпилировать его сами. –
_I думаю, что моя логика правильная, но не компилируется. Компилятор сообщает вам, в какой строке и столбце есть ошибки и какие ошибки имеет ваш код, поэтому, пожалуйста, вставьте его здесь. – BackSlash
Извините. Я получил ошибку в методе «get» в классе NonemptyListNode. – heeh