Monday, July 21, 2008

Merge two linked lists

//Merge the two linked lists
//The first list pHead1 will contain the merged list
void MergeList(NodePtr pHead1, NodePtr pHead2)
{
if ( (NULL == pHead1) || (NULL == pHead2) )
return;

NodePtr pCurrent1 = pHead1;
NodePtr pCurrent2 = pHead2;

while( pCurrent1 && pCurrent2 )
{
NodePtr pTemp1 = pCurrent1->pNext;
NodePtr pTemp2 = pCurrent2->pNext;

pCurrent1->pNext = pCurrent2;

//First list might be smaller in length than second
//we need to make sure we assign right pointers
if (NULL != pTemp1)
{
pCurrent2->pNext = pTemp1;
}

pCurrent1 = pTemp1;
pCurrent2 = pTemp2;
}
}

0 comments: