合并两个顺序表错误,运行时会弹出一个框,那是怎么回事
#include<iostream.h>class seplist
{
public:
seplist();
~seplist(){ delete []data; }
int find();//查找e在表中的位置
int insert(int k,int x);//第k个位置插入x
int sort();//奇数偶数,5
int paixu();//排序
int locate(int x);
int get(int i){return (i<0||i>length)?NULL:data[i];}
int Union(seplist A,seplist B);//合并两个顺序表
int duichen()//函数是否对称
{
cout<<"判断函数是否对称!"<<endl;
int i=0;
int m,flag=1;
if(length%2!=0)
cout<<"不对称!"<<endl;
else
{
m=length/2;
for(i=0;i<m;i++)
{
if(data[i]=data[length-i-1])
continue;
else
{
flag=0;
break;
}
}
if(flag==1)
cout<<"是对称的!"<<endl;
else if(flag==0)
cout<<"不对称!"<<endl;
}
return 0;
}
void CreateList()
{
for( int i=0;i<length;i++)
cin>>data[i]; //输入元素
}
void Traverse()
{ //顺序表的遍历
int i;
for(i=0;i<length;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
private:
int *data;
int length;
};
seplist::seplist()
{
cout<<"输入创建对象的长度!"<<endl;
cin>>length;
if(length>0)
{
data=new int[length];//申请动态空间
}
}
int seplist::find()
{
cout<<"查找数组中的一个字符!"<<endl;
int i=0;
int e,j=-1;
cout<<"输入要查找的字符!"<<endl;
cin>>e;
while(i<length)
{
if(e==data[i])
{
j=i;
break;
}
i++;
}
if(j==-1)
cout<<"no same!"<<endl;
else if(j==i)
cout<<"e="<<data[j]<<endl;
return 0;
}
int seplist::insert(int k,int x)
{
cout<<"插入之后!"<<endl;
if (k<0 || k>length+1 )
return 0;
else {
length++;
for(int j=length;j>k;j--)
data[j]=data[j-1];
data[k]=x;
return 1;
}
}
int seplist::sort()//奇数在前,偶数在后
{
cout<<"寄偶交换!"<<endl;
int i;int j;int t;
for(j=0;j<length;j++)
for(i=0;i<length-j-1;i++)
if(data[i]%2==0&&data[i+1]%2!=0)
{
t=data[i];
data[i]=data[i+1];
data[i+1]=t;
}
return 0;
}
int seplist::paixu()
{
cout<<"排序之后!"<<endl;
int i;int j;int t;
for(j=0;j<length;j++)
for(i=0;i<length-j-1;i++)
if(data[i]>data[i+1])
{
t=data[i];
data[i]=data[i+1];
data[i+1]=t;
}
return 0;
}
int seplist::locate(int x)
{
int i=0;
while(i<=length && data[i]!=x)
{
i++;
if(i>length)
return -1;
else
return i;
}
return 0;
}
int seplist::Union(seplist A,seplist B)
{
int n=length;
int m=length;
for(int i=0;i<m;i++)
{
int x=B.get(i);
int k=A.locate(x);
if(k==-1)
{
A.insert(n+1,x);
n++;
}
}
return 0;
}
int main()
{
cout<<"***************************"<<endl;
cout<<"* *"<<endl;
cout<<"*调 用 各 个 函 数! *"<<endl;
cout<<"* *"<<endl;
cout<<"***************************"<<endl;
seplist a,b;
a.CreateList();
b.CreateList();
a.Union(a,b);//调用合并函数,合并之后存放在a中
a.Traverse();//输出
return 0;
}