public boolean palindromLinkedList() {
//find size
Node temp = head;
int size=0;
while(temp != null){
size++;
temp=temp.next;
}
//find while loop iteration
int c;
if(size%2 ==0){
c = size/2;
}else{
c = (size+1)/2;
}
//intialise start and end pointer
Node start = head;
Node end = tail;
//index pointer
int k =size-1;
//loop for the palindrome condition
while(c > 0)`
if(start.data != end.data){
return false;
}
start = start.next;
Node find = head;
k--;
for(int i=0;i<=k;i++){
find = find.next;
}
end = find;
c--;
}
return true;
}
我尝试使用类似于两个指针的方法来检查链表是否是回溯链表,我初始化了两个变量,其中一个变量为start = head和end = tail。start从start开始检查节点,end从tail开始检查,在检查数据后start 和 end 值相等我做了更改,使 start 指向 nextnode 并使用 for 循环查找 end 的前一个节点,这个过程一直持续到指针到达中间节点,如果链表是回文它返回 true 或否则错误。我认为我的方法是正确的,但似乎有一些我错过了
看来你实现了自己的链表,使得这个问题很难回答。
但是,假设您的代码类似于 java.util.LinkedList:
java中的==
检查引用,而不是给定的对象。您应该使用 .equals
来比较节点数据。
更好的是 Objects.equals(start.data, end.data)
,因为它还可以处理 null
。