In: Computer Science
Write a class named Palindrome.java and Write a method isPalindrome that takes an IntQueue as a parameter and that returns whether or not the numbers in the queue represent a palindrome (true if they do, false otherwise). A sequence of numbers is considered a palindrome if it is the same in reverse order. For example, suppose a Queue called q stores this sequence of values:
front [3, 8, 17, 9, 17, 8, 3] back
Then the following call:
isPalindrome(q) should return true because this sequence is the same in reverse order. If the list had instead stored these values:
front [3, 8, 17, 9, 4, 17, 8, 3] back
the call on isPalindrome would instead return false because this sequence is not the same in reverse order (the 9 and 4 in the middle don't match).
The empty queue should be considered a palindrome. You may not make any assumptions about how many elements are in the queue and your method must restore the queue so that it stores the same sequence of values after the call as it did before. The method header is specified as follows:
public static boolean isPalindrome(IntQueue q)
public class IntQueue{
Integer[] arr;
int numOfElements=0;
int front=0;
int rear=-1;
public IntQueue(int cap);
public void enqueue(Integer data);
public Integer dequeue();
public boolean isFull();
public boolean isEmpty();
}
methods document:
public class IntStack{
Integer[] arr;
int index=0;
public IntStack(int cap);
public void push(Integer data);
public Integer pop();
public Integer top();
public boolean isFull();
public boolean isEmpty();
}
are the available methods, and we do not have size() or length() which is how i have done these types of problems before.
public static boolean isPalindrome(IntQueue q)
{
//FIRST PUSHING ALL ELEMENTS IN Q TO STACK AND ANOTHER
QUEUE
IntQueue temp = new IntQueue(q.numOfElements);
IntStack s = new IntStack(q.numOfElements);
while(!q.isEmpty())
{
Integer t = q.dequeue();
temp.enqueue(t);
s.push(t);
}
//now checking palindrome or not
boolean pal=true;
while(!temp.isEmpty())
{
Integer t1 = temp.dequeue();
Integer t2 = s.pop();
if(t1!=t2)
pal=false;//means not a
palindrome
//restoring previous queue
q.enqueue(t1);
}
return pal;
}