请问这里为什么会超时
(有序表合并)给定有序的单链表La和Lb(元素类型为整型),请编写程序将La和Lb合并成为一个新的有序表。(注意:你的程序使用的辅助空间为常数,即若La中有m个节点,Lb中有n个节点,程序需要的节点空间为m+n+常数)【输入】
单链表La的值(升序)(-1结束)
单链表Lb的值(升序)(-1结束)
【输出】
La和Lb排序的后的结果
例如:
【输入】
1 6 12 19 -1
3 7 16 29 45 99 -1
【输出】
1 3 6 7 12 16 19 29 45 99
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
typedef int Node_entry;
struct Node {
Node_entry entry;
Node *next;
Node( );
Node(Node_entry item, Node *add_on = NULL);
}node;
Node::Node( )
{
next=NULL;
}
Node::Node(Node_entry item,Node *add_on)
{
entry=item;
next=add_on;
}
Node* mergeTwoLists(Node* l1, Node* l2) {
Node* preHead=new Node(-1);
Node* prev=preHead;
while (l1!=NULL&&l2!=NULL){
if(l1->entry<l2->entry){
prev->next=l1;
l1=l1->next;
}else{
prev->next=l2;
l2=l2->next;
}
prev=prev->next;
}
prev->next=l1==NULL?l2:l1;
return preHead->next;
};
int main()
{
int item;
cin>>item;
Node *head1=new Node(item);
Node *p=head1;
cin>>item;
while(item!=-1)
{
p->next=new Node(item);
p=p->next;
cin>>item;
}
p=head1;
getchar();
delete p;
p=NULL;
cin>>item;
Node *head2=new Node(item);
p=head2;
cin>>item;
while(item!=-1)
{
p->next=new Node(item);
p=p->next;
cin>>item;
}
delete p;
p=NULL;
Node *q=mergeTwoLists(head1,head2);
while(q)
{
printf("%d ",q->entry);
q=q->next;
}
}