Here is accepted Java solution that uses the simple trick.

You could check if the list is palidroming by maintaing two pointers one to the beginning and second to the end of the list and iteratively checking if the nodes contain the same value, since the problem requires to process the linked list: finding the kth element from the end of the list each time is not efficient and would end up with O(N ^ 2) solution. We can fix that by doing a copy of the list: a reversed one to be specific.

Here is the complete solution:

```
public class Solution {
public boolean isPalindrome(ListNode head) {
if (head == null) {
return true;
}
ListNode node = head;
ListNode reversed = reverse(head);
while(node != null) {
if(node.val != reversed.val) {
return false;
}
reversed = reversed.next;
node = node.next;
}
return true;
}
private ListNode reverse(ListNode head) {
ListNode node = head, prev = null;
while(node != null) {
ListNode copy = new ListNode(node.val);
copy.next = prev;
prev = copy;
node = node.next;
}
return prev;
}
}
```