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;
}


  

posted @ 2011-09-04 12:10  Sw_R  阅读(157)  评论(0编辑  收藏  举报