设计算法求两个元素值递增有序的顺序表L1和L2中的公共元素,并将其置入顺序表L3中

设计算法求两个元素值递增有序的顺序表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);
	}
}

运行结果:略

猜你喜欢

转载自blog.csdn.net/qq_43554335/article/details/106843092
今日推荐