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;
}
浙公网安备 33010602011771号