List
1. list pair倒序~ 如: 1->2->3->4; after: 2->1->4->3;
void MyList::pairReverse(ListNode *p) // p is head { ListNode *ptr1 = p; // ListNode *ptr2 = p->next; ListNode *prev = p; head = ptr2; while(ptr1->next!=0 && ptr2->next!=0) { prev->next = ptr2; ptr1->next = ptr2->next; ptr2->next = ptr1; prev = ptr1; ptr1 = ptr1->next; ptr2 = ptr1->next; } if(ptr2 != 0) //last pair, if there is no second element. do nothing { prev->next = ptr2; ptr1->next = ptr2->next; ptr2->next = ptr1; prev = ptr1; } }
2. If list is a palindrome.
bool MyList::isPalindrome(ListNode *p)
{
static ListNode *curr = p;
if(!p)
return true;
if(isPalindrome(p->next))
{
if(p->value == curr->value)
{
curr = curr->next;
return true;
}
else
{
return false;
}
}
else
return false;
}