回文链表
Posted 修修55
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回文链表相关的知识,希望对你有一定的参考价值。
题目描述
请编写一个函数,检查链表是否为回文。
给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。
测试样例:
{1,2,3,2,1}
返回:true
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ class Palindrome { public: bool isPalindrome(ListNode* pHead) { // write code here stack<int> s; ListNode *fast = pHead; ListNode *slow = pHead; while (fast != NULL && fast->next != NULL) { s.push(slow->val); fast = fast->next->next; slow = slow->next; } //有奇数个元素,跳过中间元素 if (fast != NULL) { slow = slow->next; } while (slow != NULL) { int top = s.top(); s.pop(); if (top != slow->val) return false; slow = slow->next; } return true; } };
{1,2,3,2,3}
返回:false
以上是关于回文链表的主要内容,如果未能解决你的问题,请参考以下文章