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

链表的回文结构

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

全部评论

相关推荐

06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客965593684号:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
买蜜雪也用卷:我觉得应该没有哪个人敢说自己熟练使用git,代码分支一复杂还是得慢慢寻思一下的,不过基本的拉代码提交代码还有分支什么的是应该会
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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