Итак, мне нужно удалить элементы из кругового списка, как часть более крупной программы, которая не работает, и я не могу удалить последний узел, переданный в метод удаления , если проиндексированный индекс равен 1, он удалит 1-й узел в списке и заменит его, но когда останется только один узел, ему нечего ссылаться, было в это время. я оставлю мой метод удаления здесьJava Circular Linked List, Remove Node не работает должным образом
public void delete(int index)
{
if(Node.numOfUsers == 1)
{
first=null;
return;
}
//make curr the same as first node
int i = 1;
curr=first;
//if index passed in is 1, make temporary node same as one after first node
// if(size<1)
// {
// System.out.println("ok so this is where we are at");
// }
if(index==1)
{
temp=first.nextNode;
while(temp.nextNode!=first)
{
temp=temp.nextNode;
}
temp.nextNode=temp.nextNode.nextNode;
first=curr.nextNode;
}
else
{
//as long as i is not equal to node index-1 move current on 1 and increment i by 1
while(i != index-1)
{
curr=curr.nextNode;
i++;
}
//curr.nextNode is pointing to the node index we want and making it equal to one index above it
curr.nextNode=curr.nextNode.nextNode;
}
Node.numOfUsers--;
int size=size();
}
}
Вы должны рассматривать его как особый случай. Если список пуст, установите флаг или введите нулевой указатель вместо указания на элемент списка. Вам действительно повезло, с круговым связанным списком есть только один специальный случай, с некруглыми связанными списками у вас более одного (операции с первым и последним элементом). – Michael