--- Мой класс узел ---Очереди/узлы Java, что делает этот метод?
class Node<E> {
public E data;
public Node<E> next;
Node(E data, Node<E> next)
{
this.data = data;
this.next = next;
}
}
--- Мой метод тайна, которая влияет на мой список ---
public Node <E> mystery < E extends Comparable > (Node <E> first, E x) {
Node <E> p2 = null;
Node <E> p1 = first;
while (p1 != null && x.compareTo(p1.data) != 0) {
p2 = p1;
p1 = p1.next;
}
if (p1 != null) {
if (p1 == first) {
first = first.next;
} else {
p2.next = p1.next;
}
}
return first;
}
Я попытался преобразовать мой метод «тайна» в «psuedocode», чтобы попытаться понять его лучше. Но я все еще не понимаю, что он делает.
--My psuedocode--
-----While loop------
While p1 is not null/empty, and while x is not equal to p1
Set p2 equal to p1
and set p1 equal to p1.next
----If Statements------
if p1 is not empty/null and if p1 is equal to the first item in the list
then set first to first.next (moving the pointer)
if none of the above is able to be ran
then set p2.next equal to p1.next
and return first.
Мой список выглядит следующим образом ... PTR [] -> [10] [] -> [20] [] -> [30 ] [] -> [40] [] -> [50] [Ø]
Мне нужно понять, что мой метод тайны делает точно, и уметь видеть, что произойдет с этим списком, если что-то вроде это называлось: ptr = mystery (ptr, 50);
Любая помощь будет отличной. Я застрял на этом некоторое время ... Спасибо.
«Что произойдет со списком, если что-то вроде этого было вызвано: ptr = mystery (ptr, 50); вы не можете запустить его и выяснить (используя отладчик, если вам нужно) –
Место для начала будет спрашивать себя Что делает цикл while? Конечно, вы изменили код на «psuedocode», но какова цель этого цикла? В частности, каково значение 'p1' и' p2', когда цикл завершается? – clcto
Я думаю, что это его основная проблема @clcto, он не уверен и не написал ее. – AnthonyJClink