Я обычно делаю наброски перед тем, как писать код.Они избавляют меня от многих проблем.
Хорошо, но на ваш вопрос:
Ваша вставка вставляется только после первого элемента.Если ваш текущий указывает на конец, то при вставке нового элемента он должен быть связан с текущим, а не с первым.И ток всегда должен указывать на первое (чтобы сделать список круглым), даже с одним элементом.
public void insert(int n)
{
if(count == 0)
{
Link newLink = new Link(n);
first=newLink;
count++;
current = first;
current.next = first;
}
else
{
Link newLink = new Link(n);
current.next = newLink;
newLink.next = first;
count++;
current = current.next;
}
}
Кроме того, ваш дисплей должен отображаться с первого по текущий, но вы не должны потерять первый иcurrent.
public void display(int width)
{
Link display_me = first;
if(isEmpty())
System.out.printf("%" + width + "s", "--");
else
{
Link display_me = first;
do {
System.out.printf("%" + width + "d", current.data);
display_me= display_me.next;
} while (first != display_me);
}
}
Что касается удаления, я не знаю, хотите ли вы удалить первое или текущее.
Надеюсь, это поможет.