Мне нужно умножить узел (Node) в таком порядке: получаемый узел это 1 2 3 4 5 а узел после выполнения метода имеет такой вид 1 2 3 4 5 1 2 3 4 5. Написал метод: выдаёт бесконечный узел который увеличивается сам по себе. При этом предыдущее действие перед распечаткой завершилось. Как мне решить данную задачу?
Код входит в бесконечный цикл:
public static void tr12(Node<Integer> n1) {
Node<Integer> p = n1;
while (p.hasNext()) {
p = p.getNext();
}
Node<Integer> p2 = new Node<Integer>(n1.getValue(), n1.getNext());
while (p2 != null) {
Node<Integer> temp = new Node<Integer>(p2.getValue());
p.setNext(temp);
p = p.getNext();
p2 = p2.getNext();
}
print(p2);
}
Вы каждый раз добавляете элемент в конец, берёте следующий и повторяете бесконечно этот цикл.
В цикле по добавлению элементов проверять текущий элемент на равенство с тем последним. Это будет условием выхода.
public static void tr12(Node<Integer> n1) {
Node<Integer> p = n1;
while (p.hasNext()) {
p = p.getNext();
}
Node<Integer> pLast = p;
Node<Integer> p2 = new Node<Integer>(n1.getValue(), n1.getNext());
while (p2 != null) {
Node<Integer> temp = new Node<Integer>(p2.getValue());
p.setNext(temp);
p = p.getNext();
if (p2 == mPlast)
break;
p2 = p2.getNext();
}
print(p2);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей