一、题目描述
二、提供方便走读代码的图
三、题目代码
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
struct ListNode *findMid(struct ListNode*head)
{
struct ListNode* fast=head;
struct ListNode* slow=head;
while(fast&&fast->next)
{
slow=slow->next;
fast=fast->next->next;
}
return slow;
}
struct ListNode * reserve(struct ListNode*head)
{
struct ListNode*newHead=NULL;
struct ListNode*cur=head;
while(cur)
{
struct ListNode*next=cur->next;
cur->next=newHead;
newHead=cur;
cur=next;
}
return newHead;
}
class PalindromeList {
public:
bool chkPalindrome(ListNode* A) {
ListNode* mid=findMid(A);
ListNode*head=reserve(mid);
ListNode*rhead=head;
ListNode*Ahead=A;
while(rhead&&Ahead)
{
if(rhead->val!=Ahead->val)
{
return false;
}
else
{
rhead=rhead->next;
Ahead=Ahead->next;
}
}
return true;
}
};
以上是本篇文章的全部内容,如果文章有错误或者有看不懂的地方,多和喵博主交流。互相学习互相进步。如果这篇文章对你有帮助,可以给喵博主一个关注,你们的支持是我最大的动力。