/*
*归并两路链表
*/
template<typename elemType>
Node<elemType>* Mylist<elemType>::merge(Node<elemType> *first,Node<elemType> *second)
{//注意到这里链表first,second已经是顺序的了
Node<elemType> *resList=new Node<elemType>(); //开辟一个临时头节点
Node<elemType> *current;
current=resList;
while(first!=NULL && second!=NULL)
{//某一条链表空时结束
if((*cmp )(first->data,second->data))
{//根据函数指针来确定排序方式
current->next=first;
current=current->next;
first=first->next;
}
else
{
current->next=second;
current=current->next;
second=second->next;
}
}
//把还剩下不空的链表继续接到临时头结点所在的链表
while(first!=NULL)
{
current->next=first;
current=current->next;
first=first->next;
}
while(second!=NULL)
{
current->next=second;
current=current->next;
second=second->next;
}
current = resList->next;
delete resList;//记得释放头结点
return current;
}