//已知两个顺序表分别为:12,45,33,21,76,19与36,20,43,27。
//要求:将两个顺序表合并成一个顺序表,并且新的顺序表中的元素为由小到大递增。
#include <iostream>
#define MAXSIZE 20
#define ERROR 0
#define OK 1
using namespace std;
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
}SqList;
//顺序表初始化
int Init(SqList &L){
L.elem=new ElemType[MAXSIZE];
if(!L.elem){
return ERROR;
}
L.length=0;
return OK;
}
//构造函数为顺序表赋值
void input(SqList &L){
ElemType e;
cout<<"请输入一些值,到0结束"<<endl;
cin>>e;
while(e!=0){
L.elem[L.length]=e;
L.length++;
cin>>e;
}
}
int main(){
SqList L1,L2,L;
int i,t,j;
int k;
if(Init(L1)&&Init(L2)){
input(L1);
input(L2);
cout<<"两个顺序表都已存储完成"<<endl;
}
//将两个顺序表合成一个
for(i=0;i<L1.length;i++){
L.elem[i]=L1.elem[i];
}
k=L1.length;
for(i=0;i<L2.length;i++){
L.elem[k]=L2.elem[i];
k++;
}
L.length=k;
//冒泡排序
for(i=0;i<L.length;i++){
for(j=0;j<(L.length-i);j++){
if(L.elem[j]>L.elem[j+1]){
t=L.elem[j];
L.elem[j]=L.elem[j+1];
L.elem[j+1]=t;
}
}
}
//输出
for(i=0;i<L.length;i++){
cout<<L.elem[i]<<endl;
}
return 0;
}
我的思路是用一个新的顺序表来承装原来两个顺序表中的元素,然后对新的数据表进行冒泡排序,但是运行出来的结果不对,我是哪儿错了呢?