利用栈的性质。将链表中一般的数据存放在栈中。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类 the head
* @return bool布尔型
*/
bool isPail(ListNode* head) {
int len = 0, count = 0;
stack<ListNode*> sk;
ListNode* cur = head, *t = NULL;
while (cur != NULL) {
len++;
cur = cur->next;
}
cur = head;
count = len / 2;
while (count--) {
sk.push(cur);
cur = cur->next;
}
if (len % 2 == 1) {
cur = cur->next;
}
while (cur != NULL) {
if (!sk.empty()) {
t = sk.top();
sk.pop();
} else {
break;
}
if (t->val != cur->val) {
return 0;
}
cur = cur->next;
}
return 1;
}
};