贴吧各位大佬,能帮我看看这个嘛,我在自己电脑上一直输入数据都没有错误,但在oj上会显示运行错误,谁能帮我解答一下为什么😣
题目:已知线性表 LA 和 LB 中的数据元素按值非递减有序排列,现要求将 LA 和 LB 归并为一个新的线性表 LC, 且 LC 中的数据元素仍然按值非递减有序排列。例如,设LA=(3,5,8,11) ,LB=(2,6,8,9,11,15,20) 则
LC=(2,3,6,6,8,8,9,11,11,15,20)
我的代码:
#include<iostream>
using namespace std;
struct linknode
{
linknode*link;
int data;
linknode(linknode*next = NULL) :link(next) {}
linknode(int d, linknode*next = NULL) :data(d), link(next) {}
};
class list
{
linknode *first;
linknode* last;
public:
linknode*getHead()
{return first;
}
list()
{
first=new linknode;
last=first;
}
~list()
{
makeempty();
}
void input(int x)//在尾部加一个元素
{ linknode *newnode=new linknode(x) ;
last->link=newnode;
last=last->link;
}
linknode* Located(int i)//搜寻第i个元素的地址
{
if (i < 0) return NULL;
linknode *current = first; int k = 0;
while (current != NULL&&k < i)
{
current = current->link; k++;
}
return current;
}
void makeempty()
{
linknode *q;
while (first->link != NULL)
{
q = first->link;
first->link = q->link;
delete q;
}
last=first;
}
void show()//数据显示
{ linknode*current=first;
cout<<current->link->data;
current=current->link;
while(current->link!=NULL)
{cout<<" "<<current->link->data;
current=current->link;
}
cout<<endl;
}
bool isfind(int x)//是否含数据x
{
linknode*current=first;
while(current->link!=NULL)
{
if(current->link->data==x)
return true;
current=current->link;
}
return false;
}
int length()//长度
{
linknode *p = first->link; int count = 0;
while (p != NULL)
{
p = p->link; count++;
}
return count;
}
int getdata(int i)
{
if (i <= 0) return 0;
linknode * current = Located(i);
return current->data; }
};
int main()
{
list la,lb,lc;
int m,n,a,b ;
while(cin>>m)
{
for(int i=1;i<=m;i++)
{ cin>>a;
la.input(a);
}
cin>>n;
for(int i=1;i<=n;i++)
{cin>>b;
lb.input(b);
}
linknode*ia=la.getHead()->link;
linknode*ib=lb.getHead()->link;
while(ia!=NULL&&ib!=NULL )
{
if(ia->data<=ib->data)
{
lc.input(ia->data);
ia=ia->link;
}
else{
lc.input(ib->data);
ib=ib->link;
}
}
if(ia==NULL)
{
while(ib!=NULL)
{lc.input(ib->data);
ib=ib->link;
}
}
else
{
while(ia!=NULL)
{lc.input(ia->data);
ia=ia->link;
}
}
lc.show();
la.makeempty();
lb.makeempty();
lc.makeempty();
}
return 0;
}
题目:已知线性表 LA 和 LB 中的数据元素按值非递减有序排列,现要求将 LA 和 LB 归并为一个新的线性表 LC, 且 LC 中的数据元素仍然按值非递减有序排列。例如,设LA=(3,5,8,11) ,LB=(2,6,8,9,11,15,20) 则
LC=(2,3,6,6,8,8,9,11,11,15,20)
我的代码:
#include<iostream>
using namespace std;
struct linknode
{
linknode*link;
int data;
linknode(linknode*next = NULL) :link(next) {}
linknode(int d, linknode*next = NULL) :data(d), link(next) {}
};
class list
{
linknode *first;
linknode* last;
public:
linknode*getHead()
{return first;
}
list()
{
first=new linknode;
last=first;
}
~list()
{
makeempty();
}
void input(int x)//在尾部加一个元素
{ linknode *newnode=new linknode(x) ;
last->link=newnode;
last=last->link;
}
linknode* Located(int i)//搜寻第i个元素的地址
{
if (i < 0) return NULL;
linknode *current = first; int k = 0;
while (current != NULL&&k < i)
{
current = current->link; k++;
}
return current;
}
void makeempty()
{
linknode *q;
while (first->link != NULL)
{
q = first->link;
first->link = q->link;
delete q;
}
last=first;
}
void show()//数据显示
{ linknode*current=first;
cout<<current->link->data;
current=current->link;
while(current->link!=NULL)
{cout<<" "<<current->link->data;
current=current->link;
}
cout<<endl;
}
bool isfind(int x)//是否含数据x
{
linknode*current=first;
while(current->link!=NULL)
{
if(current->link->data==x)
return true;
current=current->link;
}
return false;
}
int length()//长度
{
linknode *p = first->link; int count = 0;
while (p != NULL)
{
p = p->link; count++;
}
return count;
}
int getdata(int i)
{
if (i <= 0) return 0;
linknode * current = Located(i);
return current->data; }
};
int main()
{
list la,lb,lc;
int m,n,a,b ;
while(cin>>m)
{
for(int i=1;i<=m;i++)
{ cin>>a;
la.input(a);
}
cin>>n;
for(int i=1;i<=n;i++)
{cin>>b;
lb.input(b);
}
linknode*ia=la.getHead()->link;
linknode*ib=lb.getHead()->link;
while(ia!=NULL&&ib!=NULL )
{
if(ia->data<=ib->data)
{
lc.input(ia->data);
ia=ia->link;
}
else{
lc.input(ib->data);
ib=ib->link;
}
}
if(ia==NULL)
{
while(ib!=NULL)
{lc.input(ib->data);
ib=ib->link;
}
}
else
{
while(ia!=NULL)
{lc.input(ia->data);
ia=ia->link;
}
}
lc.show();
la.makeempty();
lb.makeempty();
lc.makeempty();
}
return 0;
}