双指针和链表反转
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类 the head
* @return bool布尔型
*/
bool isPail(ListNode* head) {
// write code here
if (!head || !head->next)return true;
ListNode* pre, *p = head;
ListNode* newhead = new ListNode(0);
while (p&&p->next) {
p = p->next->next;
pre = head;
head = head->next;
pre->next = newhead;
newhead = pre;
}
if (p) {
head = head->next;
}
while (head) {
if (head->val != newhead->val)return false;
head = head->next;
newhead = newhead->next;
}
return true;
}
};