В вашей функции delete () вы возвращаете list.first
- что указывает на головной узел списка, а не на Node first* //newest node added*
, верно?Я думаю, что вы должны просто возвращаться из функции, когда задача удаления завершена, вместо того, чтобы возвращать null
или node
.
Кроме того, когда вы просматриваете список в последнем операторе else, вы должныпереместите строку n = n.next;
ниже проверки индекса.
Ваша функция delete () будет выглядеть примерно так:
public Node delete(int index,Stack list)
{
if (list.first== null)
{
return;
} else if (index == 0)
{
return;
}
else
{
Node n = list.first;
for (int i = 0; i < index; i++)
{
//If the next Node of the current node is +1 the current index
if(i+1==index)
{
n.next = n.next.next;//skips over the existing element
return;
}
n = n.next;
}
return;
}
}
И:
list.delete(index,list).item; //call the delete function
StdOut.println("After deleting element at "+ index);
list.print(); //Print the list using its print function (assuming you have one)
Надеюсьэто помогает!