#include<iostream>
using namespace std;
#define MAXSIZE 100//顺序表A的空间
typedef struct
{
int key;
char* otherinfo;
}ElemType;
typedef struct//顺序表的存储结构
{
ElemType* r;//存储空间的基地址
int length;//顺序表A的长度
}SqList;
/*冒泡排序*/
void BubbleSort1(SqList& LA)
{
int m, j, flag;
ElemType t;//新建顺序表t
m = LA.length - 1;
flag = 1;//用flag标记某一趟排序是否发生交换
while ((m > 0) && (flag == 1))
{
flag = 0;//flag置为0,如果本趟排序没有发生交换,则不会执行下一趟排序
for (j = 1; j <= m; j++)
{
if (LA.r[j].key > LA.r[j + 1].key)
{
flag = 1;//flag置为1,表示本趟排序发生了交换
t = LA.r[j];
LA.r[j] = LA.r[j + 1];
LA.r[j + 1] = t;//交换前后两个记录
}
}
--m;
}
}
void BubbleSort2(SqList& LB)
{
int m, j, flag;
ElemType t;//新建顺序表t
m = LB.length - 1;
flag = 1;//用flag标记某一趟排序是否发生交换
while ((m > 0) && (flag == 1))
{
flag = 0;//flag置为0,如果本趟排序没有发生交换,则不会执行下一趟排序
for (j = 1; j <= m; j++)
{
if (LB.r[j].key < LB.r[j + 1].key)
{
flag = 1;//flag置为1,表示本趟排序发生了交换
t = LB.r[j];
LB.r[j] = LB.r[j + 1];
LB.r[j + 1] = t;//交换前后两个记录
}
}
--m;
}
}
void CreatList1(SqList& LA)
{
int i, n;
cout << "请输入LA数据个数" << endl;
cin >> n;
cout << "请输入LA待排序的数据:" << endl;
for(i=1;i<=n;i++)
{
cin >> LA.r[i].key;
LA.length++;
}
}
void CreatList2(SqList &LB)
{
int i, n;
cout << "请输入LB数据个数" << endl;
cin >> n;
cout << "请输入LB待排序的数据:" << endl;
for(i=1;i<=n;i++)
{
cin >> LB.r[i].key;
LB.length++;
}
}
void show1(SqList LA)
{
int i;
for (i = 1; i <= LA.length; i++)
cout << LA.r[i].key <<" ";
cout << endl;
}
void show2(SqList LB)
{
int i;
for (i = 1; i <= LB.length; i++)
cout << LB.r[i].key << " ";
cout << endl;
}
bool Merge(SqList LA, SqList LB)
{
int i = 0, j = 0, k = 0;
while (i < LA.length || j < LB.length)
{
if (LA.r[i].key < LB.r[j].key)
{
LA.r[k++] = LA.r[i++];
LA.length++;
}
else
{
LA.r[k++] = LB.r[j++];//**在这一句显示了错误__**
LA.length++;
}
}
return true;
}
int main()
{
SqList LA;
LA.r = new ElemType[MAXSIZE + 1];
LA.length = 0;
CreatList1(LA);
BubbleSort1(LA);
cout << "LA排序后的结果为:" << endl;
show1(LA);
SqList LB;
LB.r = new ElemType[MAXSIZE + 1];
LB.length = 0;
CreatList2(LB);
BubbleSort2(LB);
cout << "LB排序后的结果为:" << endl;
show2(LB);
Merge(LA, LB);
cout << "合并结果为:" << endl;
show1(LA);
BubbleSort1(LA);
cout << "合并后排序后的结果为:" << endl;
show1(LA);
return 0;
}
这个程序好像并没有问题的样子,可是在调试的时候却发生了错误
显示:引发了异常: 写入访问权限冲突。
LA.r 是 0x2332112。
不知道该怎么改了