public class CheckPalindromeLL {
public static void main(String args[])
{
Link head=null;
Link l1=createLinkList1(head);
Link l2=l1;
System.out.println("first linklist");
display(l1);
System.out.println("reveresed linklist");
Link rev=reverse(l1);
Link rev2=rev;
display(rev2);
System.out.println("IS PALINDROME");
compare(l1,rev);
}
private static Link reverse(Link l11) {
Link l12=l11;
// TODO Auto-generated method stub
Link nextp;
Link curr=l12;
Link prevp=null;
while(curr!=null)
{
nextp=curr.next;
curr.next=prevp;
prevp=curr;
curr=nextp;
}
return prevp;
}
private static boolean compare(Link d1, Link d2) {
boolean flag=true;
while((d1!=null) && (d2!=null)&& flag)
{
if(d1.num!=d2.num)
{ System.out.println("not same ");
flag=false;
break;
}
else
{
System.out.println("list:"+d1.num);
System.out.println("rev:"+d2.num);
System.out.println(" same");
d1=d1.next;
d2=d2.next;
}
}
System.out.println("printing flag"+flag);
return flag;
}
private static Link createLinkList1(Link head) {
// TODO Auto-generated method stub
Link firstlink=head;
Link newLink = null;
Scanner reader = new Scanner(System.in);
System.out.println("Enter a number: ");
int x[]={1,2,3,1};
for(int i=0;i<x.length;i++)
{
newLink=new Link(x[i]);
newLink.next=firstlink;
firstlink=newLink;
}
head= firstlink;
return newLink;
}
public static void display(Link start)
{
Link s1=start;
while(s1!=null)
{
System.out.println(s1.num);
s1=s1.next;
}
}
}比较linkedlist的linkedlist和反向,但不能比较第二个element.It,只需检查原始和反向linkedlist的第一个元素,并根据第一个元素only.Am给出答案我遗漏了什么??
https://stackoverflow.com/questions/38025429
复制相似问题