Monday, October 24, 2016

Find a linkedlist is a palindrome or not

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;
}
}

}

No comments:

Post a Comment