题解 | #链表的回文结构#

链表的回文结构

http://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa

/*
struct ListNode {
int val;
struct ListNode next;
ListNode(int x) : val(x), next(NULL) {}
};
/
class PalindromeList {
public:
bool chkPalindrome(ListNode* A) {
struct ListNodeslow=A,fast=A,pery;
while(fast&&fast->next)
{
pery=slow;
slow=slow->next;
fast=fast->next->next;
}
pery->next=NULL;
struct ListNode
n1=NULL,n2=slow,n3;
while(n2)
{
n3=n2->next;
n2->next=n1;
n1=n2;
n2=n3;
}
slow=n1;
while(A)
{
if(A->val!=slow->val)
{
return false;
}
slow=slow->next;
A=A->next;
}
return true;
}
};
先用快慢指针法找到中点;再将中点之后的链表反转;原链表中点前一个成员指向空;原链表循环比较反转链表,若有不同则返回false,若成功执行到最后返回true

全部评论

相关推荐

09-25 23:37
已编辑
桂林电子科技大学 Java
点赞 评论 收藏
分享
09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务