设计算法求两个元素值递增有序的顺序表L1和L2中的公共元素,并将其置入顺序表L3中
有些实验代码仅粉丝可见哦
#include<iostream>//计算机系蓝多多 实验八
#include<stdio.h>
#include<iomanip>
using namespace std;
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int len;
}SqList;
void merge(SqList A, SqList B, SqList& C)//合并算法
{
int i = 0, j = 0, k = 0;
while (i < A.len && j < B.len)
{
if (A.data[i] < B.data[j])
{
i++;
}
else if (A.data[i] > B.data[j])
{
j++;
}
else
{
C.data[k] = B.data[j];
j++;
i++;
k++;
}
}
C.len = k;
}
void main()
{
SqList sqA, sqB, sqC;
int Adata, Bdata;
cout << "注意本代码仅适合此题目要求不具备异常处理:"<<endl;
cout<<"设计算法求两个元素值递增有序的顺序表L1和L2中的公共元素,并将其置入顺序表L3中。"<<endl;
cout << "请输入顺序表A中的元素个数(不超过100个)";
cin >> Adata;
cout << "下面请按元素值递增顺序输入元素" << endl;
for (int i = 0; i < Adata; i++)
{
cout << "顺序表中A第" << i << "个元素是:";
cin >> sqA.data[i];
}
sqA.len = Adata;
cout << "顺序表A的长度为:" << sqA.len << endl;
cout << "请输入顺序表B中的元素个数(不超过100个)";
cin >> Bdata;
for (int i = 0; i < Bdata; i++)
{
cout << "顺序表B中第" << i << "个元素是:";
cin >> sqB.data[i];
}
sqB.len = Bdata;
cout << "顺序表B的长度为:" << sqB.len << endl;
merge(sqA, sqB, sqC);
cout << "顺序表C的长度为:" << sqC.len << endl;
cout << "顺序表C中的元素依次为(即为A、B的公共元素):";
for (int i = 0; i < sqC.len; i++)
{
cout << sqC.data[i] << setw(6);
}
}
运行结果:略