Я создаю связанную функцию списка для домашней работы, которая добавляет в любом индексе, за исключением последнего, но я не понимаю, как поставить условие targetList.addToIndexAt(81,0);
без дозорных узловКак добавить в начало связанного списка в Java
EDIT Хорошо, я исправил все проблемы, кроме одного. На этот раз код запускает код: 81,0,0,0,0
, что означает, что after
возвращается к 0 каждому циклу кода. How do i make the after=after.tail retain it's number?
public void addToIndexAt(int n, int index){
IntList addition = new IntList(n);
if(index==0){ //THIS IS MY PROBLEM
IntList beginning=this;
IntList after=this;
IntList current=this;
IntList temp=this;
while(after.tail!=null){
after=after.tail;
temp=after;
after.head=current.head;
}
beginning.head=n;
}
else{
IntList after = this;
IntList before = this;
int nafter = index;
int nbefore = index;
while(nafter>0){
after = after.tail;
nafter--;
}
addition.tail = after;
while(nbefore>1){
before = before.tail;
nbefore--;
}
before.tail= addition;
}
}
Возможно, вы захотите изучить [узлы дозорных] (http://en.wikipedia.org/wiki/Linked_list#Sentinel_nodes), чтобы избежать необходимости в особых случаях для целей. –
Подумайте, насколько проще управление списком будет если вы всегда действовали на головном узле списка, а не на произвольном узле. addToIndexAt в классе List, который поддерживает ссылку на голову, всегда может ходить по списку, находить узел для вставки, а затем делать вставку. Он мог бы даже обновить головной указатель внутри. –