Я пытаюсь проверить, является ли связанный список палиндромом, используя очередь.solve()
функция возвращает true , если связанный список имеет значение palindrome.Equating q.peek
со значением Node возвращает false даже после того, как значения равны.Пробная печать q.peek()
возвращает LList$Node@7852e922.
Я сделал Google, он говорит, что значение узла очереди используется в предыдущем функциональном вызове, не получил много.
public class LList {
private Node head = null;
static class Node {
int data;
Node next;
Node(int d) {
data = d;
next = null;
}
}
public void push(int d) {
Node n = new Node(d);
n.next = head;
head = n;
}
public boolean solve(Node t, Queue q) {
if (t == null) {
return true;
}
q.add(t.data);
if (solve(t.next, q)) {
**System.out.println(q.peek());**//LList$Node@7852e922
if (q.peek().equals(t.data)) {
q.remove();
} else {
return false;
}
} else {
return false;
}
return true;
}
public static void main(String args[]) {
LList lList = new LList();
lList.push(5);
lList.push(4);
lList.push(3);
lList.push(4);
lList.push(5);
Queue<Integer> q = new LinkedList<Integer>();
System.out.println(lList.solve(lList.head, q));
}
}