两个链表的归并,不借助第三个链表可以实现吗?为什么提交了是WA

#include
using namespace std;
struct node{
int data;
node *next;
};
class linklist{
public:
linklist(int a[], int n);
~linklist();
void add(linklist l);
void print();
private:
node *first;
};
linklist::linklist(int a[], int n)
{
first = new node;
first->next = NULL;
node *r = first;
for(int i = 0;i < n;i++){
node *s = new node;
s->data = a[i];
s->next = r->next;
r->next = s;
r = s;
}
}
linklist::~linklist()
{
node *p = first;
while(first != NULL){
first = first->next;
delete p;
p = first;
}
}
void linklist::add(linklist l)
{
node *pre = first;
node *qre = l.first;
node *p = first->next;
node *q = l.first->next;
while(p != NULL && q != NULL){
if(p->data < q->data){
pre = p;
p = p->next;
}
else{
qre->next = q->next;
q->next = p;
pre->next = q;
pre = q;
q = qre->next;
}
}
if(p == NULL && q != NULL){
pre->next = q;
}
}
void linklist::print()
{
node *p = first->next;
while(p != NULL){
cout<data<<" ";
p = p->next;
}
}
int main()
{
int m, n;
cin>>m>>n;
int a[m], b[n];
for(int i = 0;i < m;i++){
cin>>a[i];
}
for(int i = 0;i < n;i++){
cin>>b[i];
}
linklist l1(a, m), l2(b, n);
l1.add(l2);
l1.print();
l1.~linklist();
l2.~linklist();
return 0;
}

https://blog.csdn.net/lingfengtengfei/article/details/12345683

74行有语法错误
检查一下要求最后有没有\n这个也可能报错
头文件不全