所谓回文结构,就是指完全对称的结构,例如:1->2->3->2->1、13->6->13等
思路:定义一个栈,若是回文结构,将链表反转,反转之后值出现的顺序与原链表值出现的次序相同
public class Node{
public int value;
public Node next;
public Node(int value) {
this.value=value;
}
}
public boolean huiwen (Node head){
Stack<Node> stack=new Stack<>();
Node cur=head;
//将链表中的数据全部放入栈中,相当于将链表的值逆序
while (cur!=null) {
stack.push(cur);
cur=cur.next;
}
//判断栈中逆序之后的元素的值是否与原链表相同
while (head!=null) {
if (stack.pop().value!=head.value) {
return false;
}
head=head.next;
}
return true;
}