Я делаю простую реализацию очереди с узлами, у которых есть методы экземпляра setNext, getNext. Класс, который я пишу, имеет поля Node First и Node Last. Мой метод постановки в очередь должен иметь 3 случая
(1) Добавить в конец списка (обычная реализация очереди)
this.back.setNext(node to add);
this.back = (node to add);
(2) Добавить в пустой список
this.front = this.back = (node to add);
(3) Добавить в начало списка (и, таким образом, переместить все остальные элементы назад)
Мне кажется, это очень просто, но мне трудно разобраться, как получить все следующие значения для соответствия и не перезаписывать какие-либо узлы. Пожалуйста, дайте мне знать алгоритм, который может сделать это. Спасибо!
Обновление: одна из реализаций, которую я попробовал, использует массив:
Node[] x = new Node[this.totalNodes+1];
Node current = this.front;
int i = 0;
while(current != null) {
x[i] = current;
current = current.getNext();
i++;
}
int j = 0;
Node current2 = this.front;
this.front = (node to add)
while(j < x.length-1) {
current2.setNext(x[j+1]);
current2 = current2.getNext();
j++;
}