public class LinkNode {
@Override
public String toString() {
return "LinkNode [data=" + data + ", next=" + next + "]";
}
private int data;
private LinkNode next;
LinkNode() {
this.data = 0;
this.next = null;
}
LinkNode(int data, LinkNode next) {
this.data = data;
this.next = next;
}
}
public class Palindrome {
private static LinkNode node1 = null;
private static int front = -1;
private static int rear = -1;
private static int[] queue = new int[100];
public static void main(String[] args) {
int n1 = 12;
int rem = 0;
while (n1 != 0) {
rem = n1 % 10;
node1 = new Palindrome().insert(node1, rem);
n1 = n1 / 10;
}
System.out.println(new Palindrome().findPalindrome(node1));
}
private boolean findPalindrome(LinkNode node) {
if (null == node) {
return true;
}
insertqueue(node.getData());
boolean result = findPalindrome(node.getNext());
if (removequeue() == node.getData() && result) {
return true;
}
return false;
}
private LinkNode insert(LinkNode node, int data) {
if (null == node) {
node = new LinkNode(data, null);
return node;
}
LinkNode temp = node;
while (temp.getNext() != null) {
temp = temp.getNext();
}
temp.setNext(new LinkNode(data, null));
return node;
}
private int removequeue() {
return queue[front++];
}
private void insertqueue(int data) {
queue[++rear] = data;
if (front == -1) {
front = 0;
}
}
}
@Override
public String toString() {
return "LinkNode [data=" + data + ", next=" + next + "]";
}
private int data;
private LinkNode next;
LinkNode() {
this.data = 0;
this.next = null;
}
LinkNode(int data, LinkNode next) {
this.data = data;
this.next = next;
}
}
public class Palindrome {
private static LinkNode node1 = null;
private static int front = -1;
private static int rear = -1;
private static int[] queue = new int[100];
public static void main(String[] args) {
int n1 = 12;
int rem = 0;
while (n1 != 0) {
rem = n1 % 10;
node1 = new Palindrome().insert(node1, rem);
n1 = n1 / 10;
}
System.out.println(new Palindrome().findPalindrome(node1));
}
private boolean findPalindrome(LinkNode node) {
if (null == node) {
return true;
}
insertqueue(node.getData());
boolean result = findPalindrome(node.getNext());
if (removequeue() == node.getData() && result) {
return true;
}
return false;
}
private LinkNode insert(LinkNode node, int data) {
if (null == node) {
node = new LinkNode(data, null);
return node;
}
LinkNode temp = node;
while (temp.getNext() != null) {
temp = temp.getNext();
}
temp.setNext(new LinkNode(data, null));
return node;
}
private int removequeue() {
return queue[front++];
}
private void insertqueue(int data) {
queue[++rear] = data;
if (front == -1) {
front = 0;
}
}
}
No comments:
Post a Comment