有几种方法,目前只写了每两两合并
struct Node
{
int value;
Node* next;
}
Node* MergeNode(Node* l1, Node* l2)
{
Node* temp = new Node();
Node* head = temp;
while(l1 && l2)
{
if(l1.value < l2.value)
{
temp.next= l1;
l1 = l1.next;
}
else
{
temp.next = l2;
l2 = l2.next;
}
temp = temp.next;
}
if(l1) temp.next = l1;
if(l2) temp.next = l2;
return head;
}
Node* MergeNNode(vector<Node*>& lists)
{
Node* result = lists[0];
for(int i=1; i <lists.size(); ++i)
{
result = MergeNode(result, lists[i]);
}
return result;
}
int main()
{
vector<Node*> listNodes;
listNodes.push_back(new Node());
listNodes.push_back(new Node());
listNodes.push_back(new Node());
MergeNNode(listNodes);
return 0;
}