题目大意:给出一个链表,判断链表中存放的数是否构成回文。
算法思想:
1.如果链表只有一个节点或者为空,返回真。
2.遍历链表将链表中的元素都放入容器中。
3.首尾比较容器中的元素,如果不相等返回false。当比较完容器中所有的元素后返回真。
代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
bool isPalindrome(ListNode* head) {
if(head==NULL||head->next==NULL) return true;
vector<int> Node;
ListNode *p=head;
while(p!=NULL){
Node.push_back(p->val);
p=p->next;
}
vector<int>::iterator pos1,pos2;
for(pos1=Node.begin(),pos2=--Node.end();pos1<=pos2;++pos1,--pos2){
if(*pos1!=*pos2)
return false;
}
return true;
}
};