mirror of
https://github.moeyy.xyz/https://github.com/TheAlgorithms/C.git
synced 2023-10-11 15:56:24 +08:00
39 lines
847 B
C
39 lines
847 B
C
/**
|
|
* Definition for singly-linked list.
|
|
* struct ListNode {
|
|
* int val;
|
|
* struct ListNode *next;
|
|
* };
|
|
*/
|
|
|
|
struct ListNode * reverse(struct ListNode *head) {
|
|
struct ListNode *res = NULL;
|
|
while(head) {
|
|
struct ListNode *pre_node = head;
|
|
head = head -> next;
|
|
pre_node ->next = res;
|
|
res = pre_node;
|
|
}
|
|
return res;
|
|
}
|
|
bool isPalindrome(struct ListNode* head){
|
|
struct ListNode *slow = head;
|
|
struct ListNode *fast = head;
|
|
struct ListNode *last;
|
|
while (fast && fast->next) {
|
|
slow = slow -> next;
|
|
fast = fast -> next -> next;
|
|
}
|
|
if(fast != NULL)
|
|
slow = slow -> next;
|
|
last = reverse(slow);
|
|
while(last) {
|
|
if (head->val != last->val)
|
|
return 0;
|
|
head = head -> next;
|
|
last = last -> next;
|
|
}
|
|
return 1;
|
|
}
|
|
|