回文结构就是节点数据对称的。例如:1->2->3->2->1.
实现方式,用辅助栈,遍历链表存入栈中。之后pop栈中元素与链表数据比较,相同是回文结构。
public static boolean isPalindrome(ListNode head) {
if (head == null)
return false;
Stack<ListNode> stack = new Stack<ListNode>();
ListNode p = head;
while (p != null) {
stack.push(p);
p = p.nextNode;
}
p = head;
while (p != null) {
if (p.values != stack.pop().values)
return false;
p = p.nextNode;
}
return true;
}
// 链表节点类
class ListNode {
public int values;
public ListNode nextNode;
public ListNode(int data) {
this.values = data;
}
}