题解 | #判断一个链表是否为回文结构#
判断一个链表是否为回文结构
http://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f
思路:我们拿到该单链表,我们求出该双链表的逆序,然后逆序与正序直接都从第一个比较,如果比较过程中两链表中的值不相等的话,直接返回false,如果遍历完之后都一直相等,则while循环结束后直接返回true
class Solution {
public:
/**
*
* @param head ListNode类 the head
* @return bool布尔型
*/
bool isPail(ListNode* head) {
// write code here
ListNode *p,*s;
if(!head||head->next==nullptr)
return true;
p=new ListNode(0);
s=head;
while(s)
{
ListNode *r=new ListNode(s->val);
r->next=p->next;
p->next=r;
s=s->next;
}
p=p->next;
while(head)
{
if(p->val!=head->val)
return false;
head=head->next;
p=p->next;
}
return true;
}
};